1

我正在使用 Facebook SDK 3.5,登录时出现以下错误:

这是我用于 facebook 登录的代码

- (BOOL)openSession:(BOOL)allowLogin
  {  
    NSArray *permissions = [NSArray arrayWithObjects:@"user_photos",@"email",@"user_location",@"offline_access", nil];
    return [FBSession openActiveSessionWithReadPermissions:permissions
          allowLoginUI:allowLogin
          completionHandler:^(FBSession *session1,
                              FBSessionState state,
                              NSError *error) {[
                                  self sessionStateChanged:session1 state:state error:error];
                                     }];  
  }

 - (void)sessionStateChanged:(FBSession *)session  state:(FBSessionState)state  error:(NSError *)error
   {        
     switch (state) {            
       case FBSessionStateOpen:
        {

        }
       break;

       case FBSessionStateClosed:            
       case FBSessionStateClosedLoginFailed:
        {
          [[FBSession activeSession] closeAndClearTokenInformation];  
        }
       break;       

       default:
       break;            
      }

    if (error) {
       UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"   message:error.localizedDescription delegate:nil  cancelButtonTitle:@"OK"  otherButtonTitles:nil];
       [alertView show];
       [alertView release];
       }
   }

错误

Domain=com.facebook.sdk 
Code=2 "The operation couldn’t be completed. (com.facebook.sdk error 2.)" 
UserInfo=0x1e0a3080 
  {
    com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:SystemLoginCancelled, 
    com.facebook.sdk:ErrorInnerErrorKey=Error 
    Domain=com.apple.accounts 
    Code=7 "The operation couldn’t be completed. (com.apple.accounts error 7.)",   
    com.facebook.sdk:ErrorSessionKey=<FBSession: 0x1d5d69d0,
    state: FBSessionStateClosedLoginFailed,
    loginHandler: 0x0, 
    appID: 205008289575045, 
    urlSchemeSuffix: , 
    tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0x1e033950>,
    expirationDate: (null), 
    refreshDate: (null),
    attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(null)>
   }

任何帮助,将不胜感激。

4

5 回答 5

4

得到了答案。

这造成了问题

 return [FBSession openActiveSessionWithReadPermissions:permissions
                                          allowLoginUI:allowLogin
                                     completionHandler:^(FBSession *session1,
                                                         FBSessionState state,
                                                         NSError *error) {

                                         [self sessionStateChanged:session1 state:state error:error];
                                     }]; 

当我用这个替换上面的代码时

[FBSession openActiveSessionWithPermissions:permissions allowLoginUI:allowLogin completionHandler:^(FBSession *session1, FBSessionState state, NSError *error){

    [self sessionStateChanged:session1 state:state error:error];

}];
return YES;

一切都开始正常工作。

于 2013-06-17T09:37:43.790 回答
1

您尝试登录的用户是否已注册为 Facebook 开发人员?如果您的应用程序处于沙盒模式,则只有开发人员可以登录。

还要确保您在 plist 中提供了您的 FB 应用程序信息。

于 2013-06-14T08:08:48.750 回答
1

另一种解决方案是在您的设备上进入“设置”>“Facebook”,并确保您的应用“允许”访问您的 Facebook 帐户。否则你会得到这个错误。在这件事上困惑了一个小时,直到我发现我的应用程序不允许访问我的 Facebook 帐户......

于 2014-02-21T23:37:14.623 回答
1

您正在使用不理想的已弃用方法。根据 facebook@"offline_access"已被弃用并以登录失败而闻名。@"offline_access"从您的权限数组中删除然后将为openActiveSessionWithReadPermissions您工作:)

于 2014-04-22T13:39:29.103 回答
0

检查: 1. 您是否对创建的 FB 应用程序具有开发者权限。这意味着,如果其他人在他们的 FB 帐户中创建了该应用程序并向您提供了密钥,您将无法登录。2. 如果它处于分发模式,请检查 FB 应用程序是否已从沙盒移出到生产环境。

于 2013-06-14T08:28:07.530 回答