我正在尝试在Android中为Drive V3实施Google rest api。
但我得到 authError
{
"error":{
"errors":[
{
"domain":"global",
"reason":"authError",
"message":"Invalid Credentials",
"locationType":"header",
"location":"Authorization"
}
],
"code":401,
"message":"Invalid Credentials"
}
}
我使用AccountManager从用户获取令牌,我认为它访问了错误的控制台帐户 它如何知道要访问哪个帐户?
这是我的AccountManager代码,我成功获得了用户令牌。我也在使用AccountManager.invalidateAuthToken
Bundle options = new Bundle();
options.putString(AccountManager.KEY_ANDROID_PACKAGE_NAME, context.getPackageName());
accountManager.getAuthToken(account, scope, options, context,
callback, null);
答案 0 :(得分:0)
根据[getAuthToken](Account Manager,java.lang.String,android.os.Bundle,android.app.Activity,android.accounts.AccountManagerCallback,android.os的http://developer.android.com/reference/android/accounts/AccountManager.html#getAuthToken(android.accounts.Account文档.Handler)):
获取特定帐户的指定类型的身份验证令牌,在必要时提示用户提供凭据。此方法适用于在前台运行的应用程序,直接向用户询问密码是有意义的。
如果为此帐户缓存以前生成的身份验证令牌并键入,则会返回。否则,如果保存的密码可用,则会将其发送到服务器以生成新的身份验证令牌。否则,系统会提示用户输入密码。
它似乎取决于您在account
中传递的getAuthToken()
变量的值。
你可能已经有了这个,但是要包含在社区中,你是否包含了文档中提到的USE_CREDENTIALS
权限:
注意:如果将您的应用定位到API级别22以及之前的版本,那么这些平台需要 USE_CREDENTIALS 权限。
希望这会有所帮助。祝好运。 :)