3

我有一个带有可选Facebook 登录的 iPhone 应用程序,用户可以在设置中激活它。

我不明白(不使用“专有”开关变量存储到应用程序存储中)如何知道用户过去是否激活过它,以通过开关显示其状态。

FBSession.activeSession.state 没有给出可靠的值,因为如果令牌已过期,会话可能对应用程序“有效”,但对 Facebook 无效。

对此,我无法理解如何在令牌过期时(可能在几个小时后?)更新令牌,并且不通过切换到 Facebook 应用程序或 Safari 来请求用户提供新的身份验证请求。基本上,我想保留并使用令牌直到它有效,并在 Facebook 拒绝请求时立即更新它,因为它已过期。

先感谢您!

4

1 回答 1

2

您可以进行以下示例调用:

BOOL openedWithCachedToken = [FBSession openActiveSessionWithAllowLoginUI:NO];

如果没有缓存的令牌,这将不会向用户显示登录 UI:

另请参阅:https ://developers.facebook.com/docs/reference/ios/3.1/class/FBSession#openActiveSessionWithAllowLoginUI%3A

一旦你有一个缓存的令牌(openedWithCachedToken 为真),你就可以发出一个请求(例如 requestForMe)来验证会话在 Facebook 上是否有效。如有必要,Facebook SDK 将在您的请求之上发送一个捎带请求,以更新会话。无论如何,您都可以检查自己的请求完成处理程序以处理失败情况,这可能是无效的服务器会话。

于 2012-09-27T00:55:24.917 回答