#google-signin #google-drive-android-api #googlesigninapi #googlesigninaccount
#google-drive-android-api #google-вход в систему #учетная запись googlesigninaccount
Вопрос:
Мне нужно включить доступ на стороне сервера к Google Диску. В этом случае пользователь использует свое устройство Android. Насколько я понял, шаги следующие: 1. Создайте GoogleSignInOptions 2. С помощью GoogleSignInOptions создайте GoogleSignInAccount 3. Получите AuthCode из GoogleSignInAccount 4. Обменяйте AuthCode на токены доступа / обновления / идентификатора
Я застрял на шаге 3. Я следовал хорошо описанным руководствам без какого-либо успеха — https://developers.google.com/identity/sign-in/android/offline-access, https://developers.google.com/identity/sign-in/android/sign-in#configure_google_sign-in_and_the_googleapiclient_object
Вот код, который инициализирует процесс входа:
final GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(new Scope(Scopes.DRIVE_APPFOLDER))
.requestServerAuthCode(backend_server_web_client_id)
.build();
GoogleSignInClient google_api_client = GoogleSignIn.getClient(context, gso);
activity.startActivityForResult(google_api_client.getSignInIntent(), RC_SIGN_IN);
Вот код, который обрабатывает результат входа:
// data is the intent from onActivityResult callback
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
if (task.isComplete())
handle(task);
else {
task.addOnCompleteListener(new OnCompleteListener<GoogleSignInAccount>() {
@Override
public void onComplete(@NonNull Task<GoogleSignInAccount> task) {
handle(task);
}}
});
}
И, наконец, вот функция дескриптора, в чем проблема:
public void handle(Task<GoogleSignInAccount> task) {
try {
GoogleSignInAccount account = task.getResult(ApiException.class);
} catch (ApiException e) {
//I'm always getting this exception with status code 10, which means DEVELOPER ERROR. Keys in Google API console are checked multiple times.
}
}
В функции handle я всегда получаю исключение с кодом состояния 10, что означает DEVELOPER_ERROR. Ключи в консоли API Google проверяются несколько раз. Код был переписан несколько раз…. Я действительно понятия не имею, что может быть не так.
Спасибо 🙂
Ответ №1:
Возможно, вы забыли настроить консоль Google API. Следуйте инструкциям:https://developers.google.com/identity/sign-in/android/start-integrating
Вы видите, как создать идентификатор клиента OAuth для Android с соответствующим именем пакета и сертификатом подписи SHA1. Вам не нужно вводить этот ключ нигде в коде. Это просто должно существовать в консоли Google API.