Facebook iOS 登录 API 2.0 (SDK 3.15.1)
Posted
技术标签:
【中文标题】Facebook iOS 登录 API 2.0 (SDK 3.15.1)【英文标题】:Facebook iOS Login API 2.0 (SDK 3.15.1) 【发布时间】:2014-07-02 23:36:50 【问题描述】:我对 Facebook 的 2.0 Login api 感到很恼火。对于我(开发人员)和其他开发人员来说,它工作得非常好。但是对于几个用户,登录失败。对于我做的登录过程:
[FBSession openActiveSessionWithReadPermissions:self.readPermissions
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState status, NSError *error)
dispatch_async(dispatch_get_main_queue(), ^
_self.loginInProcess = NO;
[_self _setSessionState:status error:error];
);
];
通常情况下,FB 应用程序会打开,用户可以选择接受/拒绝访问。但是,对于某些用户,此屏幕永远不会出现。取而代之的是,该应用程序已从(正常)切换,但一旦进入 Facebook 应用程序(我认为...),它立即切换回源应用程序,但失败且没有错误。因为我无法在我自己的任何设备上复制该问题,所以我无法确定,但似乎从未调用过完成处理程序。因此,该应用程序处于等待 Facebook 批准/拒绝永远不会出现的请求的边缘。
值得注意的是,我在应用委托中有所有正确的调用:
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
BOOL wasHandled = [FBAppCall handleOpenURL:url sourceApplication:sourceApplication];
return wasHandled;
有没有人处理过这样的事情?
【问题讨论】:
【参考方案1】:因此,事实证明 Facebook 正在返回正确的数据。为了发现这一点,我必须创建一堆UIAlertView
,推出一个新的测试版并让其中一个用户向我发送这些警报的屏幕截图,这样我就可以看到到底发生了什么……关于我可以在 iPhone 上获得最接近远程调试的东西。
最后,我设置的 KVO 没有触发(等待登录过程完成)。我仍然不知道为什么它没有发射。它适用于 95% 的设备,但我正在使用以前开发人员的代码,结果证明其中有很多地雷。我通过创建一个块完成处理程序并在登录过程完成时使用它来解决这个问题。
【讨论】:
以上是关于Facebook iOS 登录 API 2.0 (SDK 3.15.1)的主要内容,如果未能解决你的问题,请参考以下文章
使用 facebook 登录并使用 oauth 2.0 对 REST api 调用进行身份验证
Graph API 2.0 版中是不是删除了 Facebook 图形搜索 API?
Facebook 请求配置文件 Graph API 无法在 iOS 7 本机 facebook 上未登录
无法使用 api v2.4 在 ios 中使用自定义按钮登录 facebook
Facebook api 集成,用于登录 iOS 应用程序超过 2 个使用相同 Facebook 应用程序 ID 的应用程序