Mam usługę backendu, która zaloguje się do mojej aplikacji i zwróci rozszerzony token facebookowy z poprzedniego logowania, prawdopodobnie z innego urządzenia (więc żadne dane uwierzytelniające nie są buforowane na tym urządzeniu). Chcę użyć tego tokena, aby rozpocząć sesję Facebooka. Używam coś takiego:Otwórz FBSession z istniejącymi danymi tokenów na iOS
FBSession* session = [[FBSession alloc] initWithPermissions:@[@"publish_actions"]];
FBAccessTokenData* tokenData =
[FBAccessTokenData createTokenFromString:token
permissions:@[@"publish_actions"]
expirationDate:nil
loginType:FBSessionLoginTypeTestUser
refreshDate:nil];
[session openFromAccessTokenData:tokenData completionHandler:nil];
jestem tutaj przechodzącej „nil” dla jasności, w moim kodu mam obchodzenia zakończenie i zalogowaniu przedmiotem sesji powrócił który wydaje się być w stanie otwartym bez błędów. Kiedy próbuję korzystać z sesji, pojawia się komunikat o błędzie:
Error Domain=com.facebook.sdk Code=5 "The operation couldn’t be completed. (com.facebook.sdk error 5.)" UserInfo=0xb8b1680 {com.facebook.sdk:HTTPStatusCode=403, com.facebook.sdk:ParsedJSONResponseKey={
body = {
error = {
code = 200;
message = "(#200) The user hasn't authorized the application to perform this action";
type = OAuthException;
};
};
code = 403;
}, com.facebook.sdk:ErrorSessionKey=<FBSession: 0xa2b62a0, state: FBSessionStateOpen, loginHandler: 0xa29e9b0, appID: 131721883664256, urlSchemeSuffix: , tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0xa273f60>, expirationDate: 4001-01-01 00:00:00 +0000, refreshDate: 2013-07-26 16:21:10 +0000, attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(
email,
"publish_actions"
)>}
Jakieś sugestie ...?
To podejście działa poprawnie w wersji SDK 3.21.1. Możliwe, że token nie został wygenerowany z FBSessionLoginTypeTestUser i dlatego mówi, że użytkownik nie jest autoryzowany. –