gpt4 book ai didi

android - .GoogleAuthException : Unknown while doing Google SSO.

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

异常(exception):

07-28 14:36:13.140: W/System.err(11382): com.google.android.gms.auth.GoogleAuthException: Unknown
07-28 14:36:13.140: W/System.err(11382): at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
07-28 14:36:13.140: W/System.err(11382): at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
07-28 14:36:13.148: E/AndroidRuntime(11382): FATAL EXCEPTION: main

我的注册码:

public class Signup extends Activity {

final private String CLIENT_ID = <android-client-id>;
final private List<String> SCOPES = Arrays.asList(new String[]{
"https://www.googleapis.com/auth/plus.login"
});
private String webId = <web-client-id>;


private GoogleAccountCredential mCredential;

private EditText mExchangeCodeEditText;
private EditText mIdTokenEditText;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_google);
//mExchangeCodeEditText = (EditText) findViewById(R.id.editTextExchangeCode);
// mIdTokenEditText = (EditText) findViewById(R.id.editTextIdToken);

// initiate a credential object with drive and plus.login scopes
// cross identity is only available for tokens retrieved with plus.login
mCredential = GoogleAccountCredential.usingOAuth2(this, Arrays.asList(SCOPES.get(0)));

// user needs to select an account, start account picker
startActivityForResult(
mCredential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER);
}

/**
* Handles the callbacks from result returning
* account picker and permission requester activities.
*/
@Override
protected void onActivityResult(
final int requestCode, final int resultCode, final Intent data) {
switch (requestCode) {
// user has returned back from the account picker,
// initiate the rest of the flow with the account he/she has chosen.
case REQUEST_ACCOUNT_PICKER:
String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
if (accountName != null) {
mCredential.setSelectedAccountName(accountName);
new RetrieveExchangeCodeAsyncTask().execute();
new RetrieveJwtAsyncTask().execute();
}
break;
// user has returned back from the permissions screen,
// if he/she has given enough permissions, retry the the request.
case REQUEST_AUTHORIZATION:
if (resultCode == Activity.RESULT_OK) {
// replay the same operations
new RetrieveExchangeCodeAsyncTask().execute();
new RetrieveJwtAsyncTask().execute();
}
break;
}
}

/**
* Retrieves the exchange code to be sent to the
* server-side component of the app.
*/
public class RetrieveExchangeCodeAsyncTask
extends AsyncTask<Void, Boolean, String> {

@Override
protected String doInBackground(Void... params) {

String scope = String.format("oauth2:server:client_id:%s:api_scope:%s",
CLIENT_ID, TextUtils.join(" ", SCOPES));
try {

GoogleAccountCredential.usingAudience(Signup.this, "server:client_id:" + webId);
return GoogleAuthUtil.getToken(

Signup.this, mCredential.getSelectedAccountName(), scope);
} catch (UserRecoverableAuthException e) {
startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION);
} catch (Exception e) {
e.printStackTrace(); // TODO: handle the exception
}
return null;
}

@Override
protected void onPostExecute(String code) {
// exchange code with server-side to retrieve an additional
// access token on the server-side.
// mExchangeCodeEditText.setText(code);
Log.d("code",code);
}
}

/**
* Retrieves a JWT to identify the user without the
* regular client-side authorization flow. The jwt payload needs to be
* sent to the server-side component.
*/
public class RetrieveJwtAsyncTask
extends AsyncTask<Void, Boolean, String> {

@Override
protected String doInBackground(Void... params) {
String scope = "audience:server:client_id:" + CLIENT_ID;
try {
return GoogleAuthUtil.getToken(
Signup.this, mCredential.getSelectedAccountName(), scope);
} catch(UserRecoverableAuthIOException e) {
startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION);
} catch (Exception e) {
e.printStackTrace(); // TODO: handle the exception
}
return null;
}

@Override
protected void onPostExecute(String idToken) {
// exchange encrypted idToken with server-side to identify the user
// mIdTokenEditText.setText(idToken);
Log.d("idtoken",idToken);
}
}

private static final int REQUEST_ACCOUNT_PICKER = 100;
private static final int REQUEST_AUTHORIZATION = 200;

}

我完全不知道这里发生了什么。帮忙?

最佳答案

我遇到了类似的问题。就我而言,问题出在谷歌控制台中缺少应用程序名称。

打开console导航到您的项目并选择“同意屏幕”。填写“产品名称”字段并保存。

关于android - .GoogleAuthException : Unknown while doing Google SSO.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17906699/

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