Мне нужно получить токен доступа из приложения Android и отправить его на внутренний сервер, чтобы выполнить некоторую операцию с API календаря Google.
Я следовал этому:
https://developers.google.com/identity/sign-in/android/backend-auth
Но я получил com.google.android.gms.common.api.ApiException: 10
Что-то пошло не так с "server_client_id"
В https://console.cloud.google.com/apis/credentials Я сделал две попытки
1) с идентификатором клиента для веб-приложения (я использую его в веб-версии проекта приложения)
2) с идентификатором клиента для приложения Android, сообщающего SHA-1 в соответствии с запросом
Что такое правильный путь 1 или 2? И почему у меня ошибка?
Спасибо
Я использую код выше:
/*GOOGLE OAUTH*/
public void signIn() {
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken("XXXXXXX.apps.googleusercontent.com")
.requestEmail()
.build();
// Build a GoogleSignInClient with the options specified by gso.
GoogleSignInClient mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, RC_SIGN_IN);
}
private void handleSignInResult(@NonNull Task<GoogleSignInAccount> completedTask) {
try {
GoogleSignInAccount account = completedTask.getResult(ApiException.class);
String idToken = account.getIdToken();
Log.v("MYLOG","Ottengo Access Token " + idToken);
// TODO(developer): send ID Token to server and validate
//updateUI(account);
} catch (ApiException e) {
Log.w("MYLOG", "handleSignInResult:error", e);
//updateUI(null);
}
}
/*GOOGLE OAUTH END*/
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
/*GOOGLE SIGN IN OAUTH SECTION*/
// Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
if (requestCode == RC_SIGN_IN) {
super.onActivityResult(requestCode, resultCode, data);
// The Task returned from this call is always completed, no need to attach
// a listener.
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
handleSignInResult(task);
}
return;
}