错误域= 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");
}
}];
答案 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];
}