如何使用登录 facebook 功能处理返回用户?

Posted

技术标签:

【中文标题】如何使用登录 facebook 功能处理返回用户?【英文标题】:How do I handle returning users with the login to facebook functionality? 【发布时间】:2015-06-08 12:09:15 【问题描述】:

我一直在设置一个 ios 应用程序,它可以使用 Facebook 功能登录。我正在使用 Swift,所以我主要关注 this guide 的 Swift。以防链接失效:我相信它是 2.x 版本的 Facebook's "login with Facebook" buttton 的操作指南和对 Swift 的翻译。

我看到了一些问题。只要我清除模拟器一切正常。如果我注销然后重新登录,一切正常。问题是当我登录然后重建应用程序时,登录按钮会记住我以前登录过(它显示为“注销”),但访问令牌FBSDKAccessToken.currentAccessToken() 为 nil 并且对图形 api 的任何调用都失败.根据文档,这应该可以工作。我究竟做错了什么?尝试确定问题所在的下一步是什么?

我很高兴发布任何可能相关的代码,但是,我的代码与样板文件几乎没有太大区别,我不确定哪些可能相关。

是否可能因为我只使用模拟器而发生这种情况?

是否有可能我使用了错误的示例?我遇到的大多数其他examples for Swift 都使用FBLoginViewDelegate 而不是FBLoginButtonDelegate

【问题讨论】:

【参考方案1】:

您需要从 viewDidAppear 转到目标视图控制器。 这是我的 viewDidAppear 代码的 sn-p,您可能会觉得有用。

override func viewDidAppear(animated: Bool) 
    if FBSDKAccessToken.currentAccessToken() == nil
        println("Not logged in")
    else
        println("Logged in")
        self.performSegueWithIdentifier("Main Navigation Controller", sender: self)
    

此代码在用户登录的视图控制器中。 如果用户已经登录到 facebook,应用程序将转到我在 self.performSegueWithIdentifier 中指定的视图控制器。在这种情况下,我的目标视图控制器称为“主导航控制器

如果用户没有登录,他们将停留在登录视图控制器中,Facebook 登录按钮显示“登录

【讨论】:

我已经添加了该功能,问题是,对于返回的用户,登录按钮显示“注销”但 currentAccessToken() == nil,因此在用户注销之前无法继续然后再次登录。 您是否尝试过从模拟器中删除该应用程序并从头开始运行它?那里可能有一些东西弄乱了按钮的状态。

以上是关于如何使用登录 facebook 功能处理返回用户?的主要内容,如果未能解决你的问题,请参考以下文章

Facebook批处理API不返回用户电子邮件ID

Facebook 登录 Segue 加载,然后返回登录屏幕

如何使用 Facebook 登录 API 对 XMPP 用户进行身份验证?

在 iOS 应用中处理多个 Facebook 用户登录

Facebook 登录在用户个人资料中返回“未定义”字段,并且不返回电子邮件。 MEANJs + Passport-facebook

迁移到 Swift 3 时,Facebook 登录不会返回应用程序