我正在使用Facebook SDK 4. +并将登录流程添加到我的应用程序中。在我登录验证应用程序后,网络视图不会消失。我只能点击完成,取消认证流程而不是完成它。
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login
logInWithReadPermissions: @[@"public_profile", @"email"]
fromViewController:self
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
NSLog(@"Process error");
} else if (result.isCancelled) {
NSLog(@"Cancelled");
} else {
//this never get executed.
[self firebaseSignInWithFBToken:[result token].tokenString];
}
}];
有什么建议吗?
对于授权的应用程序,当我将currentAccessToken
设置为nil
并重新授权时,
点击“确定”后,网页视图就会变成空白,并且不会因为回到我自己的视线而放弃。
答案 0 :(得分:1)
这可能是这个(模拟器中的白屏)发生的主要原因,因为appDelegate中的openURL方法设置不正确。
之前我遇到过这个问题,通过使用这段代码解决了这个问题。 这段代码很快。
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
var shouldOpen :Bool = FBSDKApplicationDelegate.sharedInstance().application(application,openURL: url,sourceApplication: sourceApplication,annotation: annotation)
shouldOpen = shouldOpen ? shouldOpen : GIDSignIn.sharedInstance().handleURL(url,
sourceApplication: sourceApplication,
annotation: annotation)
return shouldOpen
}
/// This is necessary for ios9 and plus
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
if #available(iOS 9.0, *) {
var shouldOpen :Bool = FBSDKApplicationDelegate.sharedInstance().application(
app,
openURL: url,
sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as! String,
annotation: nil)
shouldOpen = shouldOpen ? shouldOpen : GIDSignIn.sharedInstance().handleURL(url,sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String?,
annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
return shouldOpen
}
return true
}
如果您不使用Gmail登录,请删除GIDsign代码,然后只返回Facebook回调。