アプリを新しいFacebookSDK3.1(iOS6認証をサポート)に移行しようとしています。
正常に動作していたので、iOSが再度許可を求めることをテストするために、FBWebサイトの承認済みアプリのリストからアプリを削除することにしました。
今、私の最初の呼び出し[FBRequest requestForMe]
はこのエラーを引き起こします:
応答:
{
"error": {
"message": "Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.",
"type":"OAuthException",
"code":190,
"error_subcode":460
}
}
いくつかの詳細:
私は次のようにセッションを開こうとしています:
[FBSession openActiveSessionWithReadPermissions:nil
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
switch (state) {
case FBSessionStateOpen:
[self presentPostOptions];
break;
case FBSessionStateClosed:
case FBSessionStateClosedLoginFailed:
[FBSession.activeSession closeAndClearTokenInformation];
break;
default:
break;
}
それから私は状態でコールバックされますFBSessionStateOpen
(この時点でiOSはリクエストダイアログを表示していません、それは予想されることですか)?Facebookはこれを記録します:
2012-09-26 13:43:43.768 MyApp[2177:907] FBSDKLog: FBSession INVALID transition from FBSessionStateCreated to FBSessionStateClosed
2012-09-26 13:43:43.769 MyApp[2177:907] FBSDKLog: FBSession transition from FBSessionStateCreated to FBSessionStateCreatedOpening
2012-09-26 13:43:43.837 MyApp[2177:907] FBSDKLog: FBSession transition from FBSessionStateCreatedOpening to FBSessionStateOpen
セッションが開いたら、presentPostOptionsで次のようにします。
- (void)presentPostOptions
{
[[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
if (!error) {
self.usersName = user.name;
self.usersID = user.id;
[self getPages];
}
else
{
[self didFailWithError:error];
}
}];
}
上記の完了ブロックがコールバックされる前に、メインの状態ハンドラーブロックがFBSessionStateClosed
状態とともに呼び出されます。その間、FacebookSDKは上記のエラーをログに記録しました。
システムをリセットする方法が見つかりません。また、私はその原因を本当に理解していません。
誰かが光を当ててくれませんか?