gpt4 book ai didi

android - 检索到访问 token :null. com.google.android.gms.auth.GoogleAuthException:未知

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:54:28 24 4
gpt4 key购买 nike

我的应用程序允许用户使用 Google Plus 登录,并获取他们的姓名和电子邮件地址。我试图访问 token 。

访问 token 的代码:

Toast.makeText(this, "User is connected!", Toast.LENGTH_LONG).show();        
GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
AccountManager am = AccountManager.get(this);

final Account[] accounts = am.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE);

AsyncTask<Void, Void, String> task2 = new AsyncTask<Void, Void, String>() {
public static final int REQUEST_CODE_TOKEN_AUTH = 100;

@Override
protected String doInBackground(Void... params) {
String mScope="audience:server:client_id:899555500747-38rpnq51of946grhdvofck7r8u5p09cd.apps.googleusercontent.com:api_scope:https://www.googleapis.com/auth/plus.login";
// Get the token for the current user
String token = null;
try {
token = GoogleAuthUtil.getToken(getApplicationContext(), Plus.AccountApi.getAccountName(mGoogleApiClient), mScope);
Log.i("G token", token);
} catch (IOException transientEx) {
// Network or server error, try later
Log.e(TAG, transientEx.toString());
} catch (UserRecoverableAuthException e) {
// Recover (with e.getIntent())
Log.e(TAG, e.toString());
Intent recover = e.getIntent();
startActivityForResult(recover, REQUEST_CODE_TOKEN_AUTH );
} catch (GoogleAuthException authEx) {
// The call is not ever expected to succeed
// assuming you have already verified that
// Google Play services is installed.
Log.e(TAG, authEx.toString());
}
return token;
}
@Override
protected void onPostExecute(String token) {
Log.i(TAG, "Access token retrieved:" + token);
}

};
task2.execute();

错误:

01-27 23:42:14.877  30994-31262/com.unicloud.mittal E/loginWithGooglePlus﹕ com.google.android.gms.auth.GoogleAuthException: Unknown
01-27 23:42:14.877 30994-30994/com.unicloud.mittal I/loginWithGooglePlus﹕ Access token retrieved:null

我尝试了各种可以在 stackoverflow 上找到的解决方案。目前,我正在使用来自 dev console 的“服务帐户”中的客户端 ID ,我也尝试过将它用于“Android 应用程序的客户端 ID”,它仍然显示相同的错误。

请让我知道我做错了什么?谢谢。

最佳答案

我通过替换这一行解决了这个问题

String mScope="audience:server:client_id:899555500747-38rpnq51of946grhdvofck7r8u5p09cd.apps.googleusercontent.com:api_scope:https://www.googleapis.com/auth/plus.login";

有了这个

String mScope = "oauth2:https://www.googleapis.com/auth/plus.login";

我获得了访问 token ,我想知道我是否做对了。所以我验证了 token 是否正确。我试图去这个地址,我用我检索到的 token 替换了 accessToken

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=accessToken

它向我展示了这种输出。

{
"issued_to": "xxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
"audience": "xxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
"user_id": "xxxxxxxxxxxxxxxxxxxxxxx",
"scope": "https://www.googleapis.com/auth/userinfo.profile https://gdata.youtube.com",
"expires_in": 3019,
"access_type": "online"
}

issued_to 中,它向我显示了我的 Android 应用程序客户端 ID,这意味着此 token 已颁发给我的客户端 ID。所以我认为我走在正确的轨道上。

关于android - 检索到访问 token :null. com.google.android.gms.auth.GoogleAuthException:未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28182278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com