我知道这看起来像是一个重复的问题,但我已经查看了与此相关的堆栈溢出的每一个问题,但我仍然收到以下错误:
Error Domain=com.facebook.sdk Code=2 "The operation couldn’t be completed.
(com.facebook.sdk error 2.)" UserInfo=0x1ecbf8e0
{com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:ErrorLoginFailedReason}
这就是 NSError 的整个 NSLog ..
我已按照教程对信件进行身份验证;
- 在developers.facebook.com 上,我已将我的应用程序设为原生iOS 应用程序,并放入我的捆绑包ID
- 在我的 info.plist 中,我包含了 URL 类型 > 项目 0 > URL 方案 > 项目 0 > fb123456 和 FacebookAppID = 123456,密钥。
我正在尝试使用以下代码进行身份验证;
[FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:YES
completionHandler:
^(FBSession *session,
FBSessionState state, NSError *error) {
[self sessionStateChanged:session state:state error:error];
}];
权限设置为零。
我的应用程序委托中也有以下设置
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[FBSession.activeSession handleDidBecomeActive];
}
- (void)applicationWillTerminate:(UIApplication *)application
{
[FBSession.activeSession close];
}
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
return [FBSession.activeSession handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [FBSession.activeSession handleOpenURL:url];
}
我注意到的一件事是,在我松开按钮后,错误消息几乎立即出现在我的屏幕上,我将手机置于飞行模式并且速度相同,我认为该命令甚至没有离开手机并要去首先是 facebook 服务器。我肯定有网络连接,因为我在 facebook 调用之前访问了一个 google api。
编辑:
如果我使用下面不推荐使用的方法
[FBSession openActiveSessionWithPermissions:nil allowLoginUI:YES completionHandler:
^(FBSession *session,
FBSessionState state, NSError *error) {
[self sessionStateChanged:session state:state error:error];
}];
我可以通过 facebook 进行身份验证。
返回的会话是
<FBSession: 0x20038450, state: FBSessionStateOpen, loginHandler: 0x2006ba90, appID: 3895930xxxxxxxx, urlSchemeSuffix: , tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0x1ed4ce30>, expirationDate: 2013-04-08 16:25:19 +0000, refreshDate: 2013-02-07 16:25:19 +0000, attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(
)>
与使用更新的 3.1.1 方法的失败尝试相比此会话
<FBSession: 0x1e8970b0, state: FBSessionStateClosedLoginFailed, loginHandler: 0x0, appID: 3895930xxxxxxxx, urlSchemeSuffix: , tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0x1d5853b0>, expirationDate: (null), refreshDate: (null), attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(
)>
我假设成功登录后会创建丢失的 loginHandler 对象。
虽然这允许我使用我的登录令牌继续开发我的应用程序的其余部分,但我不能接受将我的应用程序实时发送。有谁知道为什么会发生这种情况/可能是什么原因造成的?