Android,检查用户是否使用Facebook登录

时间:2016-09-02 15:34:12

标签: android facebook facebook-graph-api android-facebook

我很难找到一个明确的方法,如何确定用户是否在我的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问题,但所有解决方案都没有解释我想要的内容。

此外,我想在应用程序启动时检查这个,所以我没有onResumeonStart等等。

3 个答案:

答案 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),并根据该结果,我开始登录活动或主要活动。