我在我的Android应用程序中集成了Facebook SDK 3.0。
让我们假设用户在Android设备中打开了一个Session。如果使用默认令牌策略,则令牌将保留在SharedPreferences中。
然后,用户撤消网络或Facebook应用程序中的令牌。
接下来,让我们假设我创建一个新的Session并将其设置为活动(这就是UiLifecycleHelper没有活动的Session。
接下来我打开会话:
Session.openActiveSession(this, true, mCallback);
创建一个新会话,如果有令牌缓存,请打开 会话并在没有任何用户交互的情况下使其处于活动状态。
因此,通过此流程,我们将使用实际已撤销的令牌打开会话...
这是真的吗?我错过了什么吗? 我怎么能这样对待?如果我尝试打开另一个新会话,将再次使用相同的无效令牌......
答案 0 :(得分:0)
我意识到你可以用以下方式清除令牌:
Session#closeAndClearTokenInformation();
因此,似乎开发人员希望用Session.openActiveSession()打开Session。如果SharedPreferences中有一个缓存的令牌并且它有效,那就完美了。 如果令牌被撤销,我们将不会知道它,直到我们在调用Facebook API时收到auth错误。如果发生这种情况,请清除令牌并重新进行身份验证。