2

我的 Facebook 登录只有在没有退出应用程序才能登录时才有效。例如,它仅在应用程序使用 iOS6 原生对话框或强制 Web 视图登录时才有效。当我尝试使用 safari 或 Facebook 应用程序登录时,它会显示一个页面,显示我已经授权了该应用程序。我单击“确定”,然后它带我回到我的应用程序,但登录没有完成。

有任何想法吗?我在这个问题上卡了很久...

提前致谢!

下面是我用来登录的代码。如果我强制使用 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;
}
4

2 回答 2

0

你有没有- application:openURL:sourceApplication:annotation:在你的应用代理中实现,声明应用程序支持 URL 方案fb[YOUR APP ID]并连接起来,以便应用程序代理调用最终到达[[FBSession activeSession] handleOpenURL:url]

外部 Web 视图的工作方式是,如果登录成功,则它会尝试使用包含登录令牌的特定于应用程序的方案打开 URL。您应该已将您的应用设置为 URL 方案的处理程序,然后将相关 URL 传递到 Facebook SDK,以便它可以解码令牌。

于 2013-04-08T21:56:42.433 回答
0

您可以尝试在您的 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];
}
于 2013-04-08T21:57:47.793 回答