解析 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 开发者登录错误

iOS Facebook 登录停止工作

facebook登录仅显示以前在flutter应用中登录的帐户

在 React Native 组件中使用 Facebook 登录功能

在用户已登录 Facebook 的设备上登录时如何跳过 Facebook 的权限页面

Parse - 每次都重新创建 Facebook 用户