ios facebook登录sdk 4.28.0错误代码3

时间:2018-03-06 06:41:22

标签: ios facebook-login

Info.plist has been configured 错误域= com.facebook.sdk.core Code = 3"(null)" UserInfo = {com.facebook.sdk:FBSDKErrorDeveloperMessageKey =构建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");
         }
     }];

6 个答案:

答案 0 :(得分:6)

今天,升级到版本4.39.0后遇到了相同的错误。 降级到4.38.0可以解决它。

答案 1 :(得分:5)

从ver。迁移后,我遇到了同样的问题。 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

答案 2 :(得分:3)

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

Open your workspace
Command + Option + Shift + K

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

pod'FBSDKCoreKit','4.36.0' pod'FBSDKLoginKit','4.36.0' pod'FacebookCore','0.4' pod'FacebookLogin','0.4'

答案 3 :(得分:3)

这是最新的“ 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下载旧框架,然后拖放到项目中。

答案 4 :(得分:0)

对于使用FirebaseUI的用户-解决方案相似。在Podfile中添加多余的行:

flatMap()

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

答案 5 :(得分:-1)

您是否在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];
}