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 found
在FIRAuth.m
#import 这是最新的'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-ios-sdk 是不是使用 iOS 6 Facebook 集成来支持登录而不打开本机 Facebook 应用程序?