iOS Facebook SDK错误域com.facebook.sdk代码2和代码7

时间:2013-12-18 12:06:30

标签: ios objective-c facebook facebook-sdk-3.0

我正在开发允许用户通过Facebook登录的应用程序(使用Facebook SDK)。当用户已在iPhone设置中登录Facebook时出现错误。如果不是 - 一切正常。

NSArray *permissions = [[NSArray alloc] initWithObjects:@"email", nil];
    [FBSession openActiveSessionWithReadPermissions:permissions
                                       allowLoginUI:YES
                                  completionHandler:
     ^(FBSession *session,
       FBSessionState state, NSError *error) {
         [self fbSessionStateChanged:session state:state error:error];
     }];

我已经尝试将权限设置为nil数组 - 没有任何改变。

日志是:

Error Domain=com.facebook.sdk Code=2 "The operation couldn’t be completed.
(com.facebook.sdk error 2.)" UserInfo=0x1552c6c0 
{com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:SystemLoginDisallowedWithoutError,
com.facebook.sdk:ErrorSessionKey=<FBSession: 0xabe8100, state: FBSessionStateClosedLoginFailed,
loginHandler: 0x0, appID: APPIDHERE, urlSchemeSuffix: ,
tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0x14b8f3d0>,
expirationDate: (null), refreshDate: (null),
attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(null)>}

有时也出现Code 7的错误。 我几乎阅读了与此错误相关的所有主题。

我的步骤是:

  1. 将我在.plist文件中的应用ID与FB套件ID进行比较。他们是一样的!!!
  2. 我的应用未处于沙盒模式!
  3. 如果我从[FBSession openActiveSessionWithReadPermissions:permissions更改为[FBSession openActiveSessionWithPermissions:permissions - 它有效。但它被弃用了。

4 个答案:

答案 0 :(得分:13)

是的,看到此错误后,如果转到“设置”,您会看到此应用的设置已“关闭”。但是在这种情况下的问题是从未提示用户允许访问 - 即在第一次访问时自动将设置变为OFF。如果用户被问到,那当然这是可以理解的,但事实并非如此(就好像SDK默默地自动按下Do not Allow for the user)。这就是为什么这是一个问题。

在您进一步阅读之前,我想要注意的是,一旦设置了设置,您就不能简单地重复该过程来测试它,因为一旦设置了设置,它就永远不会询问用户(甚至删除并重新安装应用程序没有帮助)。要测试此问题,您需要转到设置 - &gt;重置权限。一般 - &gt;重置 - &gt;重置位置&amp;隐私,在您再次尝试复制之前。

从测试开始,我发现如果您在首次请求的权限中有offline_access,则会出现此登录错误(并且不会提示用户并将权限设置为OFF)。 SDK不会检查并告诉您不允许此权限;它只是无法登录。

答案 1 :(得分:3)

这就是我的工作方式 - 将它传递给空权限数组。

NSArray *permissionsArray = @[];

但是,请确保您拥有在我的Facebook应用页面中设置的权限。我只需要默认的一个,所以我没事。

我有一种感觉,facebook改变了它的服务器端代码。我的应用程序工作正常,然后我的FB登录破了。

答案 2 :(得分:0)

我认为这些代码很模糊,会有很多不同的东西。

最后,我发现问题在于,当我为应用商店准备应用时,我的应用套件ID尚未更新。登录您的Facebook开发者帐户并确保应用ID正确无误。

答案 3 :(得分:0)

检查您是否正确地将Facebook XML粘贴到Info.plist中! (as seen here)

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>fb{your-app-id}</string>
    </array>
  </dict>
</array>
<key>FacebookAppID</key>
<string>{your-app-id}</string>
<key>FacebookDisplayName</key>
<string>{your-app-name}</string>
<key>LSApplicationQueriesSchemes</key>
<array>
  <string>fbapi</string>
  <string>fb-messenger-api</string>
  <string>fbauth2</string>
  <string>fbshareextension</string>
</array> 

我忘了省略大括号,而是替换了内部文本,产生了这篇文章引用的错误。确保完全替换“{your-app-id}”!