即使已在设备中安装,Facebook本机登录也无法打开Facebook应用程序?

帕万·乔希

我已经按照iOS 9的facebook-iso-sdk 4.8.0的文档中的说明进行了每个步骤,但是即使已经安装了facebook应用程序,也无法在我的应用程序中执行“ login-with-facebook”切换。

正如您在下面的屏幕截图中看到的那样,我已经修改了info.plist,但仍然无法使本机应用程序切换正常工作。

我还仔细检查了info.plist值中的拼写错误。我可以向您保证它们是正确的。

这是我的代码:-

    if (![AppDelegate SharedInstance].login) {
        [AppDelegate SharedInstance].login = [[FBSDKLoginManager alloc] init];
    }
    [AppDelegate SharedInstance].login.loginBehavior = FBSDKLoginBehaviorNative;
    [[AppDelegate SharedInstance].login logInWithReadPermissions:@[@"public_profile",@"email",@"user_friends"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
        if (error) {

        }
        else if (result.isCancelled)
        {
            // Handle cancellations
        }
        else
        {
            NSLog(@"result.grantedPermissions == %@",result.grantedPermissions);
            if (result.token)
            {
                [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"id, name, email, first_name, last_name"}]
                 startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
                     if (!error) {
                         NSLog(@"fetched user:%@", result);
                         NSString *userImageURL = [NSString stringWithFormat:@"https://graph.facebook.com/%@/picture?type=large", [result objectForKey:@"id"]];
                         [dictFacebookDetail addEntriesFromDictionary:result];
                         [dictFacebookDetail setObject:userImageURL forKey:@"profilepic"];
                         NSLog(@"facebook login result --- %@",dictFacebookDetail);
                         [self performSelectorInBackground:@selector(CheckFacebookUser:) withObject:dictFacebookDetail];
                     }
                 }];
            }
        }
    }];

我想念什么?

info.plist的屏幕截图

克罗格萨尔瓦多

我已经找到了解决方案,但是您应该在FBSDKLogin窗格中进行一些更改。我在调试Pod时,我意识到Facebook在类中询问FBSDKServerConfiguration该应用程序的服务器配置。它返回一个带有一些信息的JSON,以为我们的应用配置Pod。我意识到默认情况下JSON返回此字典:

 "ios_sdk_dialog_flows" =     {
        default =         {
            "use_native_flow" = 0;
            "use_safari_vc" = 1;
        };
        message =         {
            "use_native_flow" = 1;
        };
    };

默认情况下use_native_flow为0,因此当它保存信息以userDefaults供下次启动应用程序时使用。因此,当应用程序调用FBSDKLoginManangerlogin方法并在此方法中检查loginBehaviour时,变量useNativeDialog将返回NO。因此,交换机使用下一种情况。case FBSDKLoginBehaviorBrowser:

- (void)logInWithBehavior:(FBSDKLoginBehavior)loginBehavior
{
.
.
...
  switch (loginBehavior) {
    case FBSDKLoginBehaviorNative: {
      if ([FBSDKInternalUtility isFacebookAppInstalled]) {
        [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:^(FBSDKServerConfiguration *serverConfiguration, NSError *loadError) {
            BOOL useNativeDialog = [serverConfiguration useNativeDialogForDialogName:FBSDKDialogConfigurationNameLogin];
          if (useNativeDialog && loadError == nil) {
            [self performNativeLogInWithParameters:loginParams handler:^(BOOL openedURL, NSError *openedURLError) {
              if (openedURLError) {
                [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors
                                   formatString:@"FBSDKLoginBehaviorNative failed : %@\nTrying FBSDKLoginBehaviorBrowser", openedURLError];
              }
              if (openedURL) {
                completion(YES, FBSDKLoginManagerLoggerAuthMethod_Native, openedURLError);
              } else {
                [self logInWithBehavior:FBSDKLoginBehaviorBrowser];
              }
            }];
          } else {
            [self logInWithBehavior:FBSDKLoginBehaviorBrowser];
          }
        }];
        break;
      }
      // intentional fall through.
    }
    case FBSDKLoginBehaviorBrowser: {
    .
    . 
    . 

}

如我们在代码中看到的,我们知道应用程序是否已安装在if中if ([FBSDKInternalUtility isFacebookAppInstalled])为了解决这个问题,我改变了这一行

BOOL useNativeDialog = [serverConfiguration useNativeDialogForDialogName:FBSDKDialogConfigurationNameLogin];

 BOOL useNativeDialog = YES;

我知道这不是一个好习惯,如果我更新此Pod,它将改变,但至少可以正常工作,我现在需要它。我想我们可以在Facebook开发人员管理站点中更改该配置,但是我什么都没找到。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果安装本机应用程序,则使用Facebook最新的SDK登录,然后在Android中未打开对话框

来自分类Dev

IOS中的Facebook登录可以在模拟器上运行,但不能在安装了本机应用程序的设备上运行

来自分类Dev

IOS中的Facebook登录可以在模拟器上运行,但不能在安装了本机应用程序的设备上运行

来自分类Dev

如何通过href =“”在移动设备上打开Facebook本机应用程序

来自分类Dev

如何通过href =“”在移动设备上打开Facebook本机应用程序

来自分类Dev

在ios中的Facebook登录中检查是否已在此应用程序中注册

来自分类Dev

即使首次登录后,Facebook AccessToken.getAccessToken在打开应用程序时也为null

来自分类Dev

Facebook深层链接会打开Google Play而不是应用程序(即使已安装)

来自分类Dev

如果已安装在iPhone中,则在Facebook中打开一个共享链接以在本机应用程序中打开

来自分类Dev

正确在浏览器或本机应用程序中打开Facebook页面链接IOS Cordova

来自分类Dev

正确在浏览器或本机应用程序中打开Facebook页面链接IOS Cordova

来自分类Dev

应用程序浏览器中的Andriod Facebook无法使用Facebook登录

来自分类Dev

FBSDKLoginManager无法在本机ios应用程序中打开登录对话框

来自分类Dev

iOS:使用Facebook登录并打开本机Facebook应用

来自分类Dev

Facebook应用程序邀请打开SafariViewController而不是本机应用程序

来自分类Dev

我的 webview 应用程序无法登录 Facebook?

来自分类Dev

即使存在WinForms C#应用程序也无法打开MDB(访问)文件

来自分类Dev

即使没有其他应用程序在监听,也无法打开端口8888 [Windows]

来自分类Dev

在未安装本机应用程序的情况下使用Facebook 4.0在Facebook上共享照片

来自分类Dev

无法在Android应用程序中创建Facebook登录名找不到符号方法getAccessToken()

来自分类Dev

无法在Android应用程序中创建Facebook登录名找不到符号方法getAccessToken()

来自分类Dev

在设备中安装时无法安装应用程序错误

来自分类Dev

在设备中安装时无法安装应用程序错误

来自分类Dev

应用程序在Facebook登录中获取nullPointerException时崩溃

来自分类Dev

安装了Facebook应用程序后,发布后Facebook登录不起作用

来自分类Dev

安装Facebook应用程序时出现适当的Facebook登录错误

来自分类Dev

PHP SDK-如何知道来自Facebook的人是否已在Facebook上安装并授权了我的应用程序?

来自分类Dev

在Android中与Facebook应用程序打开链接

来自分类Dev

如何使用Facebook凭据登录到我的本机移动Web应用程序

Related 相关文章

  1. 1

    如果安装本机应用程序,则使用Facebook最新的SDK登录,然后在Android中未打开对话框

  2. 2

    IOS中的Facebook登录可以在模拟器上运行,但不能在安装了本机应用程序的设备上运行

  3. 3

    IOS中的Facebook登录可以在模拟器上运行,但不能在安装了本机应用程序的设备上运行

  4. 4

    如何通过href =“”在移动设备上打开Facebook本机应用程序

  5. 5

    如何通过href =“”在移动设备上打开Facebook本机应用程序

  6. 6

    在ios中的Facebook登录中检查是否已在此应用程序中注册

  7. 7

    即使首次登录后,Facebook AccessToken.getAccessToken在打开应用程序时也为null

  8. 8

    Facebook深层链接会打开Google Play而不是应用程序(即使已安装)

  9. 9

    如果已安装在iPhone中,则在Facebook中打开一个共享链接以在本机应用程序中打开

  10. 10

    正确在浏览器或本机应用程序中打开Facebook页面链接IOS Cordova

  11. 11

    正确在浏览器或本机应用程序中打开Facebook页面链接IOS Cordova

  12. 12

    应用程序浏览器中的Andriod Facebook无法使用Facebook登录

  13. 13

    FBSDKLoginManager无法在本机ios应用程序中打开登录对话框

  14. 14

    iOS:使用Facebook登录并打开本机Facebook应用

  15. 15

    Facebook应用程序邀请打开SafariViewController而不是本机应用程序

  16. 16

    我的 webview 应用程序无法登录 Facebook?

  17. 17

    即使存在WinForms C#应用程序也无法打开MDB(访问)文件

  18. 18

    即使没有其他应用程序在监听,也无法打开端口8888 [Windows]

  19. 19

    在未安装本机应用程序的情况下使用Facebook 4.0在Facebook上共享照片

  20. 20

    无法在Android应用程序中创建Facebook登录名找不到符号方法getAccessToken()

  21. 21

    无法在Android应用程序中创建Facebook登录名找不到符号方法getAccessToken()

  22. 22

    在设备中安装时无法安装应用程序错误

  23. 23

    在设备中安装时无法安装应用程序错误

  24. 24

    应用程序在Facebook登录中获取nullPointerException时崩溃

  25. 25

    安装了Facebook应用程序后,发布后Facebook登录不起作用

  26. 26

    安装Facebook应用程序时出现适当的Facebook登录错误

  27. 27

    PHP SDK-如何知道来自Facebook的人是否已在Facebook上安装并授权了我的应用程序?

  28. 28

    在Android中与Facebook应用程序打开链接

  29. 29

    如何使用Facebook凭据登录到我的本机移动Web应用程序

热门标签

归档