Spe*_*niz 14 authentication sdk facebook logout ios
我刚从Facebook iOS SDK 3.0.X升级到3.1.1,并重写了一些代码......
根据注销工作流程的Facebook文档(https://developers.facebook.com/docs/tutorials/ios-sdk-tutorial/authenticate/#step3),我正在调用FBSession.activeSession对象的closeAndClearTokenInformation方法.
这似乎对Facebook会话状态没有影响,因为在调用之后立即检查它仍然会返回一个打开的会话.
就目前而言,一旦我的应用程序使用Facebook登录,它就不会注销.
[更新1]
根据要求,这是我用来检查会话状态的代码:
if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded && FBSession.activeSession.isOpen)
//logged in
else
//not logged in
Run Code Online (Sandbox Code Playgroud)
[更新2]
改变了我的逻辑......改变了我原来的代码:
if (FBSession.activeSession.isOpen)
//logged in
else
//not logged in
Run Code Online (Sandbox Code Playgroud)
因为FBSession.activeSession.state返回FBSessionStateOpen,而不是FBSessionStateCreatedTokenLoaded.
小智 22
也许这会有所帮助. https://developers.facebook.com/bugs/497294866962479?browse=search_507cb8ebc4f025673237228
我将所有这些方法调用在一起,以确保它真正注销.疯狂的错误.
[FBSession.activeSession closeAndClearTokenInformation];
[FBSession.activeSession close];
[FBSession setActiveSession:nil];
Run Code Online (Sandbox Code Playgroud)
我知道这可能会迟到但是在Android(3.0 SDK)上,如果您不在创建它的同一个Context中(或者如果应用程序已关闭且会话未获得某种方式),则Session.getActiveSession()可能会返回null恢复).它发生了,它由SDK处理,所以你真的没有多少.
在这些情况下,调用closeAndClearTokenInformation()并没有太大作用(如果您查看源代码,您将理解为什么).我的解决方案就是这些方面(在Java中):
Session session = Session.getActiveSession();
if (session != null) {
Session.getActiveSession().closeAndClearTokenInformation();
Session.getActiveSession().close();
Session.setActiveSession(null);
} else {
// construct a new session (there are different ways to do this, this is how I do it because I need to pass the FACEBOOK_API_KEY programmatically).
session = new Session.Builder(MyApp.getInstance()).setApplicationId(Constants.FACEBOOK_API_KEY).build();
if (session != null) {//to be safe
//beware with the case of Session vs sesssion.
Session.setActiveSession(session);
session.closeAndClearTokenInformation();
session.close();
Session.setActiveSession(null);
}
}
Run Code Online (Sandbox Code Playgroud)
这有效地使我的会话成为:
{Session state:CREATED, token:{AccessToken token: permissions:[]}, appId:xxxxx}
Run Code Online (Sandbox Code Playgroud)
请记住,创建的与Closed(或Open)不同.从该状态,您可以毫无问题地重新打开会话.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
10793 次 |
| 最近记录: |