我使用Facebook iOS SDK(版本3.2),並且一切正常,直到用戶進入Facebook並從授權應用程序列表中刪除應用程序。在那時,我仍然使用緩存會話登錄,即使它實際上不再有效。強制清除訪問令牌並再次登錄也會導致使用相同的舊訪問令牌。Facebook iOS SDK 3.2,當用戶從Facebook.com移除應用程序時出現問題
現在在application:didFinishLaunchingWithOptions:
我有這樣的代碼來測試會話:
// Relogin with cached session
if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded) {
NSLog(@"We're logged in to Facebook!");
[FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:NO completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
NSLog(@"accessToken: %@", session.accessTokenData.accessToken);
NSLog(@"status: %i", status);
NSLog(@"error: %@", error);
switch (status) {
case FBSessionStateOpen:
NSLog(@"FBSessionStateOpen");
NSLog(@"permissions: %@", session.permissions);
break;
case FBSessionStateClosed:
case FBSessionStateClosedLoginFailed:
[session closeAndClearTokenInformation];
[Utilities presentMessage:@"Facebook login failed" withTitle:@"Error" level:MessageLevelError];
break;
default:
break;
}
}];
}
我每次啓動應用程序,它說我仍然登錄時使用的user_birthday和電子郵件的權限。但是,當我嘗試使用accessToken打開https://graph.facebook.com/me?access_token=xxx時,它返回「錯誤驗證訪問令牌:用戶123未授權應用程序123」。
使用[FBSession.activeSession closeAndClearTokenInformation];
清除令牌並強制進行新的登錄不會有幫助,我總是以完全相同的舊accessToken結束。
還有一個類似的問題(Facebook SDK 3.1 iOS: Handle login if user remove app from Facebook Settings),但它表示「然後,用戶關閉iOS應用程序並重新啓動它......通過此次重新啓動,iOS應用程序」已修復「並檢測到用戶是否更長時間登錄「。我根本沒有這種行爲。
這是我打開第一會議地點:
- (void)openFBSession {
NSArray *perm = @[ @"user_birthday", @"email" ];
[FBSession openActiveSessionWithReadPermissions:perm allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
DLog(@"accessToken: %@", session.accessTokenData.accessToken);
DLog(@"status: %i", status);
DLog(@"error: %@", error);
switch (status) {
case FBSessionStateOpen:
DLog(@"FBSessionStateOpen");
// this is where I need to use session.accessTokenData.accessToken, which is stale
break;
case FBSessionStateClosed:
case FBSessionStateClosedLoginFailed:
[FBSession.activeSession closeAndClearTokenInformation];
[Utilities presentMessage:@"Facebook login failed" withTitle:@"Error" level:MessageLevelError];
break;
default:
break;
}
}];
}
在這種情況下,您是否收到錯誤消息?你能否檢查完成處理程序的錯誤是否已設置? – 2013-03-05 00:36:48
永不發生任何錯誤。 – 2013-03-05 09:31:40