Android,检查用户是不是使用 Facebook 登录
Posted
技术标签:
【中文标题】Android,检查用户是不是使用 Facebook 登录【英文标题】:Android, check if user is logged with FacebookAndroid,检查用户是否使用 Facebook 登录 【发布时间】:2017-01-10 18:52:30 【问题描述】:我正在努力寻找一种明确的方法,即如何确定用户是否在我的 android 应用程序上使用 Facebook 登录。
Facebook 官方文档说:
您可以通过检查 AccessToken.getCurrentAccessToken() 和 Profile.getCurrentProfile() 来查看一个人是否已经登录。
但是,AccessToken.getCurrentAccessToken()
仅在 SDK 初始化完成后才可用。据我了解,这种方法可能不会一直有效:
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 初始化后立即获得 getCurrentAccessToken
的 null
值,并且据我所知,如果用户根本没有登录,则永远不会执行 onCurrentAccessTokenChanged()
,那么。 ..如何正确检查?这对我来说似乎是一个僵局。我在这里错过了什么吗?
我做了什么:我看过官方的FB手册,一般都实现了登录,但是这个问题让我很头疼。还要检查其他一些 SO 问题,但所有解决方案都没有解释我想要什么。
另外,我想在应用程序启动时检查这个,所以我没有onResume
、onStart
之类的东西。
【问题讨论】:
【参考方案1】:试试这个:
public boolean isLoggedIn()
AccessToken accessToken = AccessToken.getCurrentAccessToken();
return accessToken != null;
或检查:login fb
【讨论】:
嗯,我的帖子中已经提供了这样的解决方案,但它没有回答我的问题,这与这些操作的异步性质有关。您能否提供详细信息,为什么这会一直有效(根据我提供的信息)? 使用 RequestAsyncTask 类。它有一个你的请求的回调方法,【参考方案2】:我正在做什么来验证用户是否已登录我这样做: 1- 在“OnCreate”方法上,我初始化了 SDK 和 facebook 回调管理器。 2-设置内容视图 3-设置令牌和配置文件跟踪器,然后启动它们。 4- 设置 UI,获取登录按钮 facebook 事件。 5-在“OnResume”方法上,我检查了这个:
if(Profile.getCurrentProfile() != null && AccessToken.getCurrentAccessToken() != null)
//You are logged
我还检查用户是否登录了设置跟踪的方法。 我希望我能很好地表达自己
【讨论】:
是的,这种方法可以正常工作,但我想检查一下,如果用户登录,应用程序何时启动,所以没有类似 onResume 这样的东西可用。【参考方案3】:是的,这种方法可以正常工作,但我想检查用户是否已登录,应用程序何时启动,因此没有可用的 onResume 之类的东西。
我做了什么来检查,我创建了一个 Splash 活动,并在该活动中检查用户是否已登录(是的,我在启动活动中初始化了 SDK),并根据该结果,我开始登录活动或主要活动。
【讨论】:
以上是关于Android,检查用户是不是使用 Facebook 登录的主要内容,如果未能解决你的问题,请参考以下文章
Android Google Map如何检查用户是不是在标记矩形区域
如何检查用户是不是使用 FB SDK 4.0 for Android 登录?
检查用户是不是在 Android 的 Firebase Google 身份验证中首次通过身份验证