解析 Facebook 登录始终显示 Facebook 页面“您已授权此应用”
Posted
技术标签:
【中文标题】解析 Facebook 登录始终显示 Facebook 页面“您已授权此应用”【英文标题】:Parse Facebook login shows always Facebook page "you have already authorized this app" 【发布时间】:2015-04-08 16:01:58 【问题描述】:在我的应用程序中,我可以通过 Facebook 登录 Parse。然而,在第一次登录后,再次登录总是显示一个 Facebook 页面,上面写着“你已经授权了这个应用”,我必须按 OK。这没用而且很烦人。 根据网上的信息,这种情况现在已经有2年多了,类似的问题问了很多,但没有给出解决方案。
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 问题(为什么在过去 2 年没有解决?),还是有办法避免这种恼人的 Facebook 页面往返?
任何帮助表示赞赏。
【问题讨论】:
我也有同样的问题。你搞清楚了吗? 很遗憾没有。但是现在 Parse UI 是开源的,也许有人可以修改它,这样问题就消失了。我希望我能尽快调查一下。 不幸的是,我刚刚意识到 PFFacebookUtils 不是(还?)开源的。 【参考方案1】:这是对我有用的解决方案。虽然如果用户注销然后再次登录,它仍然会转到 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.")
)
【讨论】:
如果我理解正确,您没有使用 Parse PFLogInViewController 进行登录,而是在代码中进行,您仍然遇到我上面描述的问题。如果有,有什么优势? @ReinhardMänner 我认为实际上没有。我仍然没有找到可以接受的解决方案,但我尝试的最后一件事是忘记 Parse 并使用 Facebook SDK。这是一个更好的用户体验,但问题是我还没有找到从 FB 登录创建 Parse 用户的好方法……你试过了吗? 不,我会尝试下一个,但如果你没有成功......也许某个 Parse 人正在倾听并关心它......以上是关于解析 Facebook 登录始终显示 Facebook 页面“您已授权此应用”的主要内容,如果未能解决你的问题,请参考以下文章
facebook登录仅显示以前在flutter应用中登录的帐户
在 React Native 组件中使用 Facebook 登录功能