ios facebook登录sdk 4.28.0错误代码3

Posted

技术标签:

【中文标题】ios facebook登录sdk 4.28.0错误代码3【英文标题】:ios facebook login sdk 4.28.0 error code 3 【发布时间】:2018-03-06 06:41:22 【问题描述】:

Error Domain=com.facebook.sdk.core Code=3 "(null)" UserInfo=com.facebook.sdk:FBSDKErrorDeveloperMessageKey=Unknown error building URL.

登录代码如下

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];

    [login
     logInWithReadPermissions: @[@"public_profile"]
     fromViewController:self
     handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) 
         NSLog(@"facebook login result.grantedPermissions = %@,error = %@",result.grantedPermissions,error);
         if (error) 
             NSLog(@"Process error");
          else if (result.isCancelled) 
             NSLog(@"Cancelled");
          else 
             NSLog(@"Logged in");
         
     ];

【问题讨论】:

你能把你的登录代码贴出来吗??? @AshwinShrestha 我已经发布了代码。 您是否尝试过使用不同的 Facebook 帐户?也尝试删除facebook下的登录->应用程序 @Steeve 当我点击登录时,它没有跳转到登录页面 升级 pod 4.39.0 后我遇到了同样的问题。有什么解决办法吗? 【参考方案1】:

今天升级到 4.39.0 版后遇到同样的错误。 降级到 4.38.0 解决了它。

【讨论】:

我赞成!同样的问题,同样的解决方案。【参考方案2】:

从版本迁移后我遇到了同样的问题。 4.38.1 到 4.39.0。

原因在 FBSDKInternalUtility.m +(NSURL *)URLWithScheme:host:path:queryParameters:error: 方法试图从包含“”、“”符号的字符串创建 NSURL。

这是因为 FBSDKUtility.m +(NSString *) URLEncode: 方法被改变了。要修复它,只需在参数字符串中添加“”、“”符号即可:

NSCharacterSet *urlAllowedSet = [NSCharacterSet
                                   characterSetWithCharactersInString:@" !*();:'@&=+$,/?%#[]\""].invertedSet;

我不确定这是否会破坏其他功能。所以最好只使用以前版本的 SDK

【讨论】:

我尝试将 *urlAllowedSet 更改为您建议的行,但没有帮助。我很乐意使用以前的版本,但我使用的是 FirebaseUI。 您可以尝试使用版本中的方法。 4.38.1:+ (NSString *)URLEncode:(NSString *)value NSCharacterSet *urlAllowedSet = [NSCharacterSet URLFragmentAllowedCharacterSet]; return [value stringByAddingPercentEncodingWithAllowedCharacters:urlAllowedSet]; 或检查此处是否出现非 URL 符号:+(NSURL *)URLWithScheme:host:path:queryParameters:error:【参考方案3】:

如果您降级到 FBSDKCoreKit 和 FBSDKLoginKit 到 4.38.0 并且仍然收到此错误,请确保您清理您的构建。

Open your workspace
Command + Option + Shift + K

我的适用于以下 pod 版本。我将使用 4.38 和 0.5 进行测试并更新。

pod 'FBSDKCoreKit', '4.36.0' 吊舱“FBSDKLoginKit”,“4.36.0” 豆荚'FacebookCore','0.4' pod 'FacebookLogin', '0.4'

【讨论】:

谢谢!我很难让它与 0.5 个 Swift 库和 >4.39 个 ObjcC 依赖项一起工作。这个组合效果很好。 @gercilasun。我在 FBSDKCoreKit 和 FBSDKLoginKit 4.39 上遇到了该错误,但降级到 4.3 导致错误的构建失败:Firebase Auth Interop/FIRAuth Interop.h' file not foundFIRAuth.m #import `行中。任何的想法?还没有尝试降级到 4.36 面团。【参考方案4】:

这是最新的'4.39.0'中的一种错误,你只需降低一个版本,即'4.38.1'。 'pod' 文件如下所示:

pod 'FBSDKLoginKit', '4.38.1'
pod 'FBSDKCoreKit', '4.38.1'

安装“pod”后,请确保清理项目。

更新:

如果您不使用 Pod,则可以从 https://developers.facebook.com/docs/ios/downloads 下载旧框架,然后将其拖放到项目中。

【讨论】:

我看到了这个错误,但我不使用 cocoapods。有什么建议吗? @anthonyhumphreys 是的,为什么不呢,请查看更新后的答案。【参考方案5】:

对于使用 FirebaseUI 的用户 - 解决方案类似。在 Podfile 中添加额外的行:

pod 'FBSDKLoginKit', '4.38.1'
pod 'FBSDKCoreKit', '4.38.1'

这将强制下载旧库而不是新库

【讨论】:

【参考方案6】:

您是否在 AppDelegate 中实现了此方法?

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
    return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                          openURL:url
                                                sourceApplication:sourceApplication
                                                       annotation:annotation];

【讨论】:

我已经实现了这个方法

以上是关于ios facebook登录sdk 4.28.0错误代码3的主要内容,如果未能解决你的问题,请参考以下文章

Facebook通过iOS中的Facebook SDK通过应用程序登录?

Facebook SDK for iOS 处理登录

Facebook SDK IOS登录问题

facebook-ios-sdk 是不是使用 iOS 6 Facebook 集成来支持登录而不打开本机 Facebook 应用程序?

Facebook iOS SDK 登录原生和 UIWebView 登录

iOS 6 facebook sdk 3.1.1 登录错误