Вход в Google для Android

Мне нужно включить серверный доступ к Google Диску. В этом случае человек использует свое Android-устройство. Насколько я понял, шаги следующие: 1. Создать GoogleSignInOptions 2. Используя GoogleSignInOptions создать GoogleSignInAccount 3. Получение authCode из GoogleSignInAccount 4. Обменять authCode на токены доступа/обновления/ID

Я застрял на шаге 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.
    }
}

В функции обработки я всегда получаю исключение с кодом состояния 10, что означает DEVELOPER_ERROR. Ключи в консоли Google API проверяются несколько раз. Код переписывался несколько раз... Я действительно понятия не имею, что может быть не так.

Спасибо :)


person Kamen Stoykov    schedule 21.03.2019    source источник


Ответы (1)


Возможно, вы забыли настроить Google API Console. Следуйте инструкциям: https://developers.google.com/identity/sign-in/android/start-integrating

Вы можете создать идентификатор клиента OAuth для Android с соответствующим именем пакета и SHA1 сертификата подписи. Вам НЕ нужно вводить этот ключ где-либо в коде. Он просто должен существовать в Google API Console.

person HeBRoS    schedule 28.03.2019