Her*_*ber 1 facebook ios facebook-login facebook-ios-sdk facebook-access-token
一旦用户的Facebook访问令牌因任何原因(从Facebook网站删除应用程序或从Facebook设置中删除应用程序的访问权限)无效,我无论如何都无法获得新的令牌!
到目前为止,我已经尝试了两种方法:(sharedFaceBookManager是一个管理Facebook的Singleton)
1) [sharedFaceBookManager.facebook extendAccessToken];
这是第一次发生"失效",应用程序将打开FB的应用程序并提示用户所需的任何内容并返回App安全和声音......第二次访问令牌无效,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];
}];
Run Code Online (Sandbox Code Playgroud)
这只返回一个Call to - (void)sessionStateChanged: with:FBSessionStateOpen和Apps Deals with this,就像登录成功一样,结果:ENDLESS LOOP(登录成功 - 登录失败) NOT A GOOD SOLUTION!
我知道当令牌无效时我不应该调用extendAccessToken,我应该提示用户再次登录
ANYBODY?请?我们甚至转向一家外包公司来帮助我们解决这个问题,而且没有任何突破!
解决了!!!
因此,结论:您无法扩展无效的Facebook访问令牌.相反,您应该清理您的AccessToken并通过您的FBSession续订您的Facebook凭据.
这是我的代码("无效的fb令牌"将调用"renewFacebookCredentials",然后"facebookReconnect"将被执行):
- (void)facebookReconnect
{
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];
}];
}
+ (void)renewFacebookCredentials
{
[FBSession.activeSession closeAndClearTokenInformation];
[FBSession renewSystemCredentials:^(ACAccountCredentialRenewResult result,
NSError *error)
{
[[EWFacebookManager sharedFaceBookManager] facebookReconnect];
}];
}
Run Code Online (Sandbox Code Playgroud)
我希望这可以帮助一些失去的灵魂并防止对新的Facebook iOS SDK和他们的"弱"文档更多的仇恨;-)
埃尔南
| 归档时间: |
|
| 查看次数: |
2850 次 |
| 最近记录: |