ユーザーの Facebook アクセス トークンが何らかの理由 (Facebook Web サイトからアプリを削除するか、Facebook 設定からアプリのアクセスを削除する) で無効になると、何をしても新しいトークンを取得できません!
これまでのところ、2 つの方法を試しました: (sharedFaceBookManager は Facebook を管理するシングルトンです)
1) [sharedFaceBookManager.facebook extendAccessToken]
;
これは初めて「無効化」が発生したときに機能し、アプリは FB のアプリを開き、ユーザーに必要なものを要求し、安全で健全なアプリに戻ります...アクセス トークンが無効な 2 回目は、extendAccessToken がハングしますユーザーは Facebook からログインできなくなります。Not a good Solution
.
2) Cookie の削除、Facebook からの切断、および再接続を試みています。
for(NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
if([[cookie domain] isEqualToString:@"facebook"]) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}
}
// Reconnecting:
NSArray *permissions = [NSArray arrayWithObjects:@"email", @"read_friendlists", @"user_photos", @"user_events", nil];
[FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:YES
completionHandler:
^(FBSession *session,
FBSessionState state, NSError *error) {
[[EWFacebookManager sharedFaceBookManager] sessionStateChanged:session state:state error:error];
}];
This Only returns a Call to - (void)sessionStateChanged: with:FBSessionStateOpen
and the Apps Deals with this as if Login Succeeded, Result: ENDLESS LOOP (Login Success - Login Failed) NOT A GOOD SOLUTION!
I Know I Shouldn't call extendAccessToken when the Token is invalid, I Should Prompt the User to Login Again
ANYBODY? Please? We've even turned to an outsourcing company to help us deal with this and NO BREAK THROUGH!