我很难找到一个明确的方法,如何确定用户是否在我的Android应用程序上使用Facebook登录。
官方Facebook文档说:
您可以通过检查AccessToken.getCurrentAccessToken()和Profile.getCurrentProfile()来查看某人是否已登录。
但是,只有在SDK初始化完成后,AccessToken.getCurrentAccessToken()
才可用。据我所知,这种方法可能不会一直有效:
FacebookSdk.sdkInitialize(this.getApplicationContext());
if (AccessToken.getCurrentAccessToken() != null) {
//good
}
因为,正如在这个问题中所讨论的那样:
How can i find my current login status - facebook API android
它说,AccessTokenTracker()
回调onCurrentAccessTokenChanged()
可能会被触发异步,因此,在这种情况下,null
的值可能会getCurrentAccessToken()
(我会简单地说放松了比赛。)
因此,如果在SDK初始化之后有可能null
getCurrentAccessToken
的值,并且据我所知,如果用户未登录,则onCurrentAccessTokenChanged()
永远不会被执行在所有,所以...如何正确检查?这对我来说似乎是一个僵局。我在这里错过了什么吗?
我做了什么:我已经查看了官方FB手册,一般都实现了登录,但是这个问题令我头疼。还要检查其他一些SO问题,但所有解决方案都没有解释我想要的内容。
此外,我想在应用程序启动时检查这个,所以我没有onResume
,onStart
等等。
答案 0 :(得分:1)
我正在做什么来验证用户是否已登录我这样做: 1-在方法“OnCreate”上,我初始化SDK和facebook回调管理器。 2-设置内容视图 3-设置令牌和配置文件跟踪器,然后启动它们。 4-设置UI,获取登录按钮facebook事件。 5-在方法“OnResume”上,我检查一下:
if(Profile.getCurrentProfile() != null && AccessToken.getCurrentAccessToken() != null){
//You are logged
}
此外,我还会检查用户是否已登录设置跟踪方法。 我希望自己表达得很好
答案 1 :(得分:0)
试试这个:
public boolean isLoggedIn() {
AccessToken accessToken = AccessToken.getCurrentAccessToken();
return accessToken != null;
}
或检查一下:login fb
答案 2 :(得分:0)
是的,这种方法可以正常工作,但我想检查一下,如果用户登录,应用程序启动时,所以没有像onResume这样的东西可用。
我做了什么检查,我创建了一个Splash活动,并在该活动中检查用户是否已登录(是的,我在启动活动中初始化了SDK),并根据该结果,我开始登录活动或主要活动。