在 JellyBean 设备上。
我正在关注这个来请求一个 oauth2 令牌,例如
AccountManager am = AccountManager.get(getActivity());
am.invalidateAuthToken(MY_AUTH_TOKEN_TYPE, null);
am.getAuthToken(aGoogleAccount, MY_AUTH_TOKEN_TYPE, null, this,
new OnTokenAcquired(), new Handler(new OnError()));
然后根据后面的代码示例进行检查:
private class OnTokenAcquired implements AccountManagerCallback<Bundle> {
@Override
public void run(AccountManagerFuture<Bundle> result) {
Bundle bundle = result.getResult();
...
Intent launch = (Intent) bundle.get(AccountManager.KEY_INTENT);
if (launch != null) {
startActivityForResult(launch, 0);
return;
}
}
}
我从来没有得到 KEY_INTENT。我理解以下内容:
验证器返回 Intent 的原因可能有很多。这可能是用户第一次登录此帐户。也许用户的帐户已经过期,他们需要重新登录,或者他们存储的凭据不正确。也许该帐户需要双重身份验证,或者需要激活相机进行视网膜扫描。原因是什么并不重要。如果你想要一个有效的令牌,你将不得不触发 Intent 来获得它。
但是,getAuthToken
始终会导致权限屏幕或登录屏幕出现在代码命中run
令牌有效的方法之前。我试过了:
- 开启两步验证。之前请求帐户登录,
run
因此始终将令牌放入run
. - 更改服务器上的密码。之前再次请求帐户登录,
run
因此始终将令牌放入run
.
没有能力尝试视网膜扫描,所以有些不知所措。
编辑 1我遇到的问题是,在某些情况下我会得到 a KEY_INTENT
,所以我宁愿现在测试这个代码路径,而不是当它出现在现场时。
提前致谢。
彼得。