iOS 9无法登录Facebook账号?

6
我正在使用 Xcode 7.0,在 iOS 9.0.2 上进行测试,并使用 Facebook SDK 4.7.0。在 iOS 9 上出现了 Code=308 "(null)" 问题。我的项目中使用了 objective-c 代码。如何解决这个问题?以下是我的代码:
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];

 [login logInWithReadPermissions:@[@"public_profile",@"email", @"user_friends"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error){

    if ([FBSDKAccessToken currentAccessToken]) { startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {

             if (!error) {
             }

         }];

    }
}];

请参考此答案:https://dev59.com/k10a5IYBdhLWcg3wfIp-#30275960 - Dharmesh Dhorajiya
感谢您的回复。Facebook登录在iOS 8上可以正常工作,但在iOS 9上却无法正常工作。 - Anbu
@DharmeshDhorajiya 谢谢。有哪些语法变化? - Anbu
在iOS9中添加了这行代码fromViewController。@Anbu - Dharmesh Dhorajiya
我尝试使用Facebook登录,但收到响应代码为308 "(null)"。@Anbu.Karthik - Anbu
显示剩余2条评论
5个回答

4

iOS9.2.1

这个版本修复了我的308问题。

将其作为“源代码”打开,查找plist文件中的LSApplicationQueriesSchemes,然后根据需要进行添加/修改即可。

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>fbauth2</string>
    <string>fbapi</string>
    <string>fb-messenger-api</string>
    <string>fbshareextension</string>
</array>

1
 - (IBAction)facebookClick:(id)sender {
    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
     [login logOut];
    login = [[FBSDKLoginManager alloc] init];
    login.loginBehavior = FBSDKLoginBehaviorWeb;
    [login logInWithReadPermissions:@[@"email"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
        if (error)
        {
                 NSLog(@"Process error");
             //   [login logOut];
         } else if (result.isCancelled) {
             NSLog(@"Cancelled");
            // [login logOut];
         } else {
             NSLog(@"Logged in");
             [self getUserInformation];
         }
     }];
}

1

Try this code :

 FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
    login.loginBehavior = FBSDKLoginBehaviorWeb;
    [login logInWithReadPermissions:@[@"email"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
         if (error)
         {
             // Process error
         }
         else if (result.isCancelled)
         {
             // Handle cancellations
         }
         else
         {
             if ([result.grantedPermissions containsObject:@"email"])
             {
                 NSLog(@"result is:%@",result);
                 [self fetchUserInfo];
                 [login logOut];
             }
         }
     }];

非常感谢,现在它可以工作了@Dharmesh。我有一个疑问,iOS 9应用程序Facebook登录不使用Facebook应用程序,现在显示一个弹出窗口。这个弹出窗口没有维护访问令牌,所以我需要多次登录。有什么解决办法吗? - Anbu

0

对于使用 xCode 8iOS 10

Capabilities 标签中,将您的项目的Keychain Sharing设置为ONtarget


0

我认为这与新的iOS 9 URL处理方案有关

您需要将受信任的URL添加到plist中的LSApplicationQueriesSchemes键下

相关问题


嗨@Tuss,请简要说明一下? 我尝试在iOS9设备上进行Facebook登录,但出现错误响应。 - Anbu
嗨@Tuss, 我尝试在iOS 9设备上使用Facebook登录,但是出现错误响应Error Domain=com.facebook.sdk.login Code=308 "(null)"。 我的Appdelegate代码如下: return [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation]; - Anbu
1
Info.plist 代码 <key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array> 我不知道我漏掉了什么。 - Anbu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接