【发布时间】:2012-09-18 01:08:02
【问题描述】:
我正在尝试将我的应用转换到新的 Facebook SDK 3.1(支持 iOS6 身份验证)。
我让它运行得很好,所以我决定从我在 FB 网站上的授权应用列表中删除该应用,以测试 iOS 是否会再次请求许可。
现在我第一次调用[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 状态。同时,Facebook SDK 记录了上述错误。
我找不到任何方法来重置系统;我也不是很了解原因。
谁能解释一下?
【问题讨论】:
-
我遇到了与您描述的完全相同的问题,今天刚刚更新到 3.1。即使卸载应用程序也无济于事
-
我没有尝试卸载,因为我特别不想做一些可能使它重新开始工作的事情 :) 我真的想找到一个程序化的解决方案,这样我的用户就不会得到卡在了这个位置。无论如何,有趣的是它并不能解决问题。
-
仅在 iOS6 设备/模拟器中运行时会发生这种情况吗?在 iOS5 上能用吗?
-
嗨。这发生在在真实设备上运行的 iOS6 上。在这个阶段我还没有测试过其他任何东西。请注意,在我从 Facebook 删除应用程序的权限之前,它一直运行良好,所以我认为这让 iPhone 的内部状态一团糟,我不知道如何重置它。至少可以说令人沮丧 - 我的用户正在等待更新。
-
正如 tarmes 在真实设备中所说的相同问题。在 iOS5 上它可以工作,因为如果你从 Facebook 删除应用程序权限,你只需要重新授权应用程序(这样你就会被重定向到 safari 或 fb 应用程序,你只需要再次允许应用程序,正如预期的那样)
标签: ios facebook ios6 facebook-ios-sdk facebook-sdk-3.1