如何使用登录 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 对 XMPP 用户进行身份验证?
Facebook 登录在用户个人资料中返回“未定义”字段,并且不返回电子邮件。 MEANJs + Passport-facebook