1

我在我的 android 应用程序中集成 Facebook SDK 3.0。

让我们假设用户在 android 设备中打开了一个 Session。如果使用默认令牌策略,令牌将持久保存在 SharedPreferences 中。

然后,用户在 Web 或 Facebook 应用程序中撤销令牌。

接下来,假设我创建了一个新的 Session 并将其设置为活动的(这就是 UiLifecycleHelper 是没有活动的 Session。

接下来我打开会话:

Session.openActiveSession(this, true, mCallback);

根据https://developers.facebook.com/docs/reference/android/current/Session#openActiveSessionFromCache(Context)

创建一个新的 Session,如果令牌缓存可用,则打开 Session 并使其处于活动状态,无需任何用户交互。

因此,通过这个流程,我们将打开一个带有实际已撤销令牌的会话......

这是真的?我错过了什么吗?我怎么能这样对待?如果我尝试打开另一个新会话,将再次使用相同的无效令牌...

4

1 回答 1

0

我意识到您可以通过以下方式清除令牌:

会话#closeAndClearTokenInformation();

因此,似乎开发人员应该做的是使用 Session.openActiveSession() 打开 Session。如果 SharedPreferences 中有缓存的令牌并且可以正常工作,那就完美了。如果令牌被撤销,我们在调用 Facebook API 时收到身份验证错误之前不会知道它。如果发生这种情况,您将清除令牌并再次重新进行身份验证。

于 2013-07-19T15:18:32.587 回答