iOS Facebook 帐户工具包 - 在成功登录后第二次打开应用程序时保留用户令牌

iOS Facebook Account kit - Persist user token when app is opened 2nd time after successful login

我的疑问是在第一次使用 Facebook 帐户工具包成功登录后,我正在第二次重新打开该应用程序。打开时如何检测和使用现有用户访问令牌?

我尝试通过在 appdelegate 中获取 Accountkit.currentAccessToken 作为显示登录页面或欢迎页面的条件。但是 currentAccessToken returns 我为空。 我还在应用程序设置中启用了 "Enable Client Access Token Flow"。 请帮助理解我的方法是否正确。

 self.accountKit = AKFAccountKit (responseType: AKFResponseType.accessToken)
        if(self.accountKit.currentAccessToken != nil)
        {
            //SHOW WELCOME PAGE
        }else{
            //SHOW LOGIN PAGE
        }

我发现 Xcode8 / iOS 10 个模拟器和钥匙串 save/retrieval 存在一些问题。参见 https://forums.developer.apple.com/thread/60617

AccountKit 将 accessToken 安全地存储在钥匙串中,但 Xcode8 / iOS 10 模拟器存在间歇性错误,导致 read/write 来自钥匙串失败。

你能测试这是否也发生在设备上吗? 显然,如果您将共享钥匙串授权添加到您的应用程序,问题就会消失,但这仍然是 Apple 上的一个错误。

我在 Android 中遇到了同样的问题(在 iOS 中没有)但我认为问题是一样的,因为在文档中是这样说的。

这是我配置使用电子邮件登录的代码(kotlin,使用let更改val)。

val configurationBuilder = AccountKitConfiguration.AccountKitConfigurationBuilder(
            LoginType.EMAIL,
            AccountKitActivity.ResponseType.CODE)

注意响应类型是AccountKitActivity.ResponseType.CODE

文档中说:

If you began the login session with AccountKitActivity.ResponseType.TOKEN, a logout option is available to remove the stored AccessToken from the device.

所以问题出在我使用的响应类型上,需要更改为AccountKitActivity.ResponseType.TOKEN才能使令牌存储在设备上。