在我的应用中,我可以通过Facebook登录Parse。但是,在第一次登录后,进一步登录总是会显示一个Facebook页面,上面写着" 您已经授权此应用程序“,我必须按OK。这没用,也很烦人 根据网上的信息,这种情况现在已经发生了两年多,并且已经提出了许多这样的问题,但没有给出任何解决方案。
Facebook页面的打开显然是通过声明
完成的[PFFacebookUtils logInWithPermissions:permissionsArray block:^(PFUser *user, NSError *error) {…
现在,Facebook https://developers.facebook.com/docs/facebook-login/ios/v2.3说:
检查现有代币
添加按钮后,应更新视图控制器以检查加载时是否存在现有令牌。如果某人已经为您的应用授予了权限,则可以消除不必要的应用切换到Facebook:
- (void)viewDidLoad
{
[super viewDidLoad];
if ([FBSDKAccessToken currentAccessToken]) {
// User is logged in, do work such as go to next view controller.
}
}
但是这种检查显然没有在PFFacebookUtils
方法中完成
那么,这是一个Parse问题(为什么它在过去的两年里没有得到解决?),还是有办法避免这个烦人的往返Facebook页面?
任何帮助都是适当的。
答案 0 :(得分:2)
这是适合我的解决方案。如果用户注销然后再次登录,它仍会进入Facebook页面...
if let accessToken: FBSDKAccessToken = FBSDKAccessToken.currentAccessToken() {
PFFacebookUtils.logInInBackgroundWithAccessToken(accessToken, block: {
(user: PFUser?, error: NSError?) -> Void in
if user != nil {
println("User logged in through Facebook!")
} else {
println("Uh oh. There was an error logging in.")
}
})
} else {
let permissions = ["public_profile", "email"]
PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions, block: {
(user: PFUser?, error: NSError?) -> Void in
if let user = user {
if user.isNew {
println("User signed up and logged in through Facebook!")
} else {
println("User logged in through Facebook!")
}
} else {
println("Uh oh. The user cancelled the Facebook login.")
}
})
}