iOS SDK 似乎无法在 iOS 6 中处理撤销的访问令牌
Posted
技术标签:
【中文标题】iOS SDK 似乎无法在 iOS 6 中处理撤销的访问令牌【英文标题】:iOS SDK does not seem to handle revoked access token in iOS 6 【发布时间】:2012-10-25 14:57:47 【问题描述】:在我的应用程序获得了在 ios 6 设置中注册的 Facebook 帐户的访问权限后,我从我的 Facebook 隐私设置中撤消了该应用程序。然后我尝试通过调用 [FBSession openActiveSessionWithReadPermissions...] 将我的应用程序与 facebook 重新连接,并且该方法使用旧的访问令牌创建 facebook 会话,该令牌已经是无效的,而无需再次请求权限授予。
我认为这个问题与这个问题(Facebook SDK 3.1 - Error validating access token)有关,据说在 SDK 3.1.1 中已修复。
但是,我正在使用 SDK 3.1.1 并通过在发生无效访问令牌错误时手动调用 accountStore renewCredentialsForAccount 来解决此问题。
【问题讨论】:
我遇到了与您在此处描述的相同的问题,并且我已经能够使用接受的方法解决它(我们最好说绕过它)您指出的question 的答案。谢谢! 【参考方案1】:基于this thread,我发现验证有效会话的唯一方法是执行简单的图形 API 调用。如果出现错误,FBSession.activeSession.isOpen
将返回 NO
,这很好地表明令牌已过期。
+ (void) ValidateSession
FBRequest *userDetails = [[FBRequest alloc] initWithSession:FBSession.activeSession graphpath:@"/me"];
[userDetails startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary *result, NSError *error)
if (error)
if (FBSession.activeSession.isOpen)
// Less probable, so check error code.
else
// Bingo: here we know for sure that the token was useless.
// Expected behavior: reauthorize.
else if (result)
NSLog(@"%@", result);
// token is valid, continue
];
iOS 似乎在删除应用程序后仍保留 Facebook 令牌,因此最好在需要时重新确保令牌有效。
【讨论】:
以上是关于iOS SDK 似乎无法在 iOS 6 中处理撤销的访问令牌的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 6.1 iOS Distribution 总是被撤销或丢失
Facebook SDK - iOS6 登录弹出窗口无法关闭
无法在 Xcode 3.2.6 上为 iOS 构建 Facebook SDK
带有 iOS 6 SDK 的 Xcode 5:“UIAccelerometer”不可用:在 OS X 上不可用