Facebook SDK 3.2登录只适用于应用程序不终止
我的Facebook登录只有在它不能退出应用程序才能登录时才有效。例如,只有当应用程序使用iOS6本机对话框或强制Web视图登录时才能使用。当我尝试使用Safari或Facebook应用登录时,它会显示一个页面,表示我已经授权该应用。我点击“确定”,它将我带回到我的应用程序,但登录没有完成。Facebook SDK 3.2登录只适用于应用程序不终止
任何想法?我一直坚持这个很长一段时间...
在此先感谢!
下面是我用来登录的代码。如果我强制使用web视图,登录将会工作,因为它不必切换出应用程序登录,但每次为用户执行此操作都不会似乎非常有效。
FBSession *session =
[[FBSession alloc] initWithAppID:@"12345"
permissions:nil
urlSchemeSuffix:@"paid"
tokenCacheStrategy:nil];
if (allowLoginUI ||
(session.state == FBSessionStateCreatedTokenLoaded)) {
[FBSession setActiveSession:session];
[session openWithBehavior:FBSessionLoginBehaviorWithFallbackToWebView
completionHandler:
^(FBSession *session, FBSessionState state, NSError *error) {
[self sessionStateChanged:session state:state error:error];
}];
result = session.isOpen;
}
你有没有在你的应用程序委托实现- application:openURL:sourceApplication:annotation:
,宣布对URL方案fb[YOUR APP ID]
和有线的东西向上,以便在应用程序委托叩最终到达[[FBSession activeSession] handleOpenURL:url]
应用程序的支持?
外部网络视图的工作方式是,如果登录成功,则会尝试打开包含登录令牌的特定于应用程序的方案的URL。您应该将您的应用设置为URL方案的处理程序,然后将相关URL传递到Facebook SDK以便它可以解码令牌。
是的,当它再次打开应用程序时,我在URL上做了一个NSLog,它返回一个access_Token。 – user1678219 2013-04-08 22:10:02
'handleOpenURL:'的返回结果是什么? '[FBSession activeSession]'肯定会返回非'nil'吗? – Tommy 2013-04-08 22:28:51
'handleOpenURL'返回fb [app_id]://授权/#access_token = [access_token]和'activeSession'非非零 – user1678219 2013-04-08 22:46:15
您可以尝试在您的AppDelegate实施文件中添加以下方法吗? (假设你已经没有):
//
// During the Login with FB flow, the app passes control to the Facebook iOS app or Facebook in mobile Safari.
// After the user is authenticated, the app will be called back with the session information.
// This method calls the Facebook session object that handles the incoming URL.
//
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *) sourceApplication annotation:(id)annotation
{
return [FBSession.activeSession handleOpenURL:url];
}
是的,我已经调用handleOpenURL我做了一个NSLog的URL,它返回的应用程序ID和access_token 。 – user1678219 2013-04-08 22:08:24
你能展示一些代码吗? – 2013-04-06 01:54:14
@FabioCardoso我在 – user1678219 2013-04-08 20:34:48
以上添加了我的登录代码基本上,当我返回到我的应用程序时,从不会调用完成处理程序 – user1678219 2013-04-08 20:55:32