【问题标题】:AWS IOS SDK + Facebook Login IssueAWS IOS SDK + Facebook 登录问题
【发布时间】:2024-04-21 11:35:01
【问题描述】:

我正在尝试使用 AWS IOS SDK 登录 Facebook,我的代码如下:

[[AWSFacebookSignInProvider sharedInstance] setPermissions:@[@"public_profile",@"email",@"user_friends"]];
[[AWSFacebookSignInProvider sharedInstance] setViewControllerForFacebookSignIn:self];
[[AWSIdentityManager defaultIdentityManager]
 loginWithSignInProvider:[AWSFacebookSignInProvider sharedInstance]
 completionHandler:^(id result, NSError *error) {
     if (error) {
         NSLog(@"^Login in with SignIn Provider has failed: %@", error);
         completion(NO);
         return;
     }
     completion(YES);
 }];

作为 loginWithSignInProvider 的响应,我收到如下错误:

Error Domain=com.facebook.sdk.login Code=306 “尚未授予 Facebook 帐户访问权限。请验证设备设置。” UserInfo={NSLocalizedDescription=尚未授予 Facebook 帐户访问权限。验证设备设置。, com.facebook.sdk:FBSDKErrorLocalizedDescriptionKey=尚未授予 Facebook 帐户访问权限。验证设备设置。}

这里我使用的是 Xcode 9.2 和 IOS 11.0,请帮我解决这个问题。

【问题讨论】:

  • 你有user_friends的FB权限吗?
  • 是的,这是默认权限,现在工作正常。可能是AWS或FB的问题,一天后自动解决了。

标签: ios aws-sdk xcode9


【解决方案1】:

试试这个:

+ (instancetype)sharedInstance {
    static AWSFacebookSignInProviderCustom *_sharedInstance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _sharedInstance = [AWSFacebookSignInProviderCustom new];
    });

    return _sharedInstance;
}

- (void)login
{

    if (!self.facebookLogin)
        self.facebookLogin = [FBSDKLoginManager new];

    [self.facebookLogin logInWithReadPermissions:@[@"public_profile", @"email", @"user_friends"]
                                         handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
                                             if (error) {
                                                 NSLog(@"Error!");
                                             } else if (result.isCancelled)
                                             {
                                                 // Login canceled, do nothing
                                                 NSLog(@"Cancelled!");
                                             } else {
                                                 NSLog(@"FSBKDAccess Token: %@", [FBSDKAccessToken currentAccessToken]);
                                                 [[AWSFacebookSignInProvider sharedInstance] login];

                                             }
                                         }];
}

【讨论】: