Jay*_*dri 34 session sdk android facebook logout
我在我的Android应用程序上有一个功能,用户授权该应用程序并共享链接.
我还需要为用户提供登出facebook的选项,如果用户未登录int(或未授权应用程序),我需要有条件地禁用此按钮.
我似乎无法在Android SDK上找到API调用,如果用户登录,我会询问FB.
我发现的是getAccessExpires():
检索当前会话的到期时间(自Unix纪元以来以毫秒为单位),如果会话未到期或不存在,则返回0.
是否可以检查会话是否等于0?还是有什么我想念的?
Dil*_*eet 55
Facebook SDK 4.x版本现在有不同的方法:
boolean loggedIn = AccessToken.getCurrentAccessToken() != null;
Run Code Online (Sandbox Code Playgroud)
要么
通过使用功能
boolean loggedIn;
//...
loggedIn = isFacebookLoggedIn();
//...
public boolean isFacebookLoggedIn(){
return AccessToken.getCurrentAccessToken() != null;
}
Run Code Online (Sandbox Code Playgroud)
检查此链接以获得更好的参考https://developers.facebook.com/docs/facebook-login/android也 检查此标题" 访问令牌和配置文件 "它说"您可以通过检查AccessToken查看某人是否已登录. getCurrentAccessToken()和Profile.getCurrentProfile()
Ton*_*han 48
我努力在FB文档中找到一个简单的答案.使用Facebook SDK 3.0版,我认为有两种方法可以检查用户是否已登录.
1)使用 Session.isOpened()
要使用此方法,您需要检索活动会话,getActiveSession()然后(这里是令人困惑的部分)解密,如果会话处于用户登录状态.我认为登录用户唯一重要的是会话isOpened().因此,如果会话不是null并且它已打开,则用户已登录.在所有其他情况下,用户已注销(请记住,Session除了打开和关闭之外,还可以使用其他状态).
public boolean isLoggedIn() {
Session session = Session.getActiveSession();
return (session != null && session.isOpened());
}
Run Code Online (Sandbox Code Playgroud)
还有另一种写这个功能的方法,在这个答案中详细说明,但我不确定哪种方法更清楚或"最佳实践".
2)用Session.StatusCallback和持续监控状态变化UiLifecycleHelper
如果您遵循本教程,您将在实例化时设置UiLifecycleHelper并注册一个Session.StatusCallback对象.有一个回调方法,call()你可以在Session.StatusCallback用户登录/注销的任何时候调用它.在该方法中,您可以跟踪用户是否已登录.也许是这样的:
private boolean isLoggedIn = false; // by default assume not logged in
private Session.StatusCallback callback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
if (state.isOpened()) { //note: I think session.isOpened() is the same
isLoggedIn = true;
} else if (state.isClosed()) {
isLoggedIn = false;
}
}
};
public boolean isLoggedIn() {
return isLoggedIn;
}
Run Code Online (Sandbox Code Playgroud)
我认为方法1更简单,可能是更好的选择.
作为旁注,任何人都可以阐明为什么教程喜欢调用state.isOpened()而不是session.isOpened()因为两者似乎都可以互换(session.isOpened()似乎只是调用state版本).
读者注意:现在新的FB 3.0 SDK已弃用.
facebook.isSessionValid() 如果用户登录则返回true,否则返回false.
| 归档时间: |
|
| 查看次数: |
39662 次 |
| 最近记录: |