接受应用程序时选择"Not Now"会导致"com.facebook.sdk error2"

Kri*_*tad 4 facebook ios facebook-ios-sdk

使用Facebook iOS SDK 3.1.

当选择不允许"连接"到Facebook应用程序时,我被困在Facebook投掷"com.facebook.sdk error2".即使在重新安装我的应用程序后,我也会遇到错误.

重现步骤:

  1. 选择与Facebook连接
  2. UIAlertView弹出的选项中选择"Not Now"

=>我无法选择再次连接.

用户再次连接的唯一方法是从"设置"中删除她的Facebook帐户并再次添加.

这是Facebook SDK中错误还是我错过了什么?

我显然已经按照授权教程进行了操作,并且在选择连接时一切正常(auth,发布内容).

Kri*_*tad 10

好的,所以我想出了这里发生了什么.拒绝授权应用程序时,会将其存储为设备的Facebook帐户(设置> Facebook)上的设置.

通过转到"设置"并重新启用相关应用,您可以尝试再次连接.用户不太清楚,但您可以捕获此错误并向用户显示某种信息.

这就是我实现它的方式(与Facebook的默认错误处理相比):

- (void)sessionStateChanged:(FBSession *)session
                      state:(FBSessionState)state
                      error:(NSError *)error {
....

if (error) {
        NSString *errorTitle = NSLocalizedString(@"Error", @"Facebook connect");
        NSString *errorMessage = [error localizedDescription];
        if (error.code == FBErrorLoginFailedOrCancelled) {
            errorTitle = NSLocalizedString(@"Facebook Login Failed", @"Facebook Connect");
            errorMessage = NSLocalizedString(@"Make sure you've allowed My App to use Facebook in Settings > Facebook.", @"Facebook connect");
        }

        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:errorTitle
                                                            message:errorMessage
                                                           delegate:nil
                                                  cancelButtonTitle:NSLocalizedString(@"OK", @"Facebook Connect")
                                                  otherButtonTitles:nil];
        [alertView show];
    }
Run Code Online (Sandbox Code Playgroud)

}

  • 最近Jason Clark(Facebook工程师似乎)提出了一个解决问题的方法,而不会将用户重定向到设备设置.这是主题:http://stackoverflow.com/questions/12601191/facebook-sdk-3-1-error-validating-access-token (2认同)