【问题标题】:How to handle expired Facebook access tokens on iOS and FB SDK 3.7如何在 iOS 和 FB SDK 3.7 上处理过期的 Facebook 访问令牌
【发布时间】:2013-08-22 04:37:15
【问题描述】:
我在我的 iOS 应用上使用 Facebook 的 iOS SDK 3.7 来处理登录。当我请求发布权限时,到期日期似乎是从登录之日起大约 2 个月。
我知道我可以使用 [FBSession activeSession].accessTokenData.expirationDate 检查到期日期,但是会发生什么情况,以及令牌到期时如何处理令牌?
我要再次运行[FBSession openActiveSessionWithReadPermissions:allowLoginUI:completionHandler:]; 吗?
【问题讨论】:
标签:
ios
facebook
cocoa
facebook-ios-sdk
【解决方案1】:
我这样做了,FB 会自动重新创建会话。
如果 FB 更改了使用条款或其他内容,则会向用户显示登录对话框。
// call this before any calls to FB api
- (void)openSession
{
if(FBSession.activeSession.state != FBSessionStateOpen)
{
[FBSession openActiveSessionWithPublishPermissions:@[FB_PUBLISH_ACTIONS_PREMISSION]
defaultAudience:FBSessionDefaultAudienceFriends
allowLoginUI:NO
completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
if(!error && session.isOpen)
{
}
else
{
_lastError = error;
// handle the error
}
// here, you can handle the session state changes in switch case or
//something else
[self session:session
hasChangedState:status
withError:error];
}];
}
}