在应用程序启动时,我需要知道用户是否已登录或未显示登录页面。
我的第一次尝试是打电话AccessToken.getCurrentAccessToken()
,但这不起作用,请参阅https://stackoverflow.com/a/29854249/1016472 https://stackoverflow.com/a/29854249/1016472
我的第二次尝试是使用 AccessTokenTracker,但这也不起作用。要使用 AccessTokenTracker,我必须首先初始化 Facebook SDK。但在此初始化期间,访问令牌将发送到跟踪器。此时跟踪器尚未创建,无法接收令牌。
我的第三次尝试是创建我自己的 AccessTokenTracker,它看起来像原来的。我在初始化 SDK 之前创建并注册了它。现在我的跟踪器在此 SDK 初始化过程中获取了令牌。
有了这些知识,我打开了一个Facebook 的错误报告 https://developers.facebook.com/bugs/1592959667644705带着问题:
- 为什么AccessTokenTracker依赖于初始化的SDK。我认为
这是个错误。
- 查看用户是否登录的正确方法是什么
在或不在应用程序启动时。
来自脸书的回答:
这看起来不像是错误。 AccessTokenTracker
::onCurrentAccessTokenChanged 应该让您知道该类何时
收到一个令牌。
我知道这是行不通的。现在我知道没有错误。
但如何解决我的问题呢?
这不起作用:
FacebookSdk.sdkInitialize(getApplicationContext());
mAccessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) {
Timber.i("AccessTokenTracker oldAccessToken: " + oldAccessToken + " - currentAccessToken: " + currentAccessToken);
}
};
正如你所说,你需要先初始化SDK。然后创建访问令牌跟踪器,然后通过 AccessToken.getCurrentAccessToken() 检查当前的访问令牌。
如果 SDK 初始化程序足够快,可以在创建跟踪器之前设置令牌,那么您对 currentAccessToken 的调用将获取令牌。如果 sdk 初始化比跟踪器注册慢,则跟踪器将获取访问令牌。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)