GoogleSignInAccount getServerAuthCode возвращает значение NULL при успешном входе в систему - PullRequest
0 голосов
/ 27 февраля 2019

Сводка

Я хочу реализовать вход в службу Google для моего приложения для Android, и по большей части он работает нормально, руководствуясь этим полезным руководством .Я изучаю использование MongoDB Stitch в качестве бэкэнда, я хочу сделать Stitch посредником между моей базой данных и клиентами.Stitch предоставляет этот не очень полезный учебник .

Проблема

В настоящее время я заблокирован проблемой, в которой:

@Override
protected void onCreate(Bundle bundle) {
    GoogleSignInOptions gso = 
        new GoogleSignInOptions
            .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();

        // Build a GoogleSignInClient with the options specified by gso.
    GoogleSignInClient googleSignInClient 
        = GoogleSignIn.getClient(this, gso);

    findViewById(R.id.signinwithgooglebutton)
        .setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Log.i(TAG, "Initiated Google onClick.");
                Intent signInIntent = 
                    googleSignInClient.getSignInIntent();
                startActivityForResult(signInIntent, RC_SIGN_IN);
        });
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == RC_SIGN_IN) {
            Task<GoogleSignInAccount> task = 
                GoogleSignIn.getSignedInAccountFromIntent(data);

            final GoogleCredential googleCredential = 
                new GoogleCredential(account.getServerAuthCode());
                                     // ^~~ returns empty String
            return;
        }
    }

Ожидаемое поведение

account.getServerAuthCode() должен вернуть код аутентификации сервера, чтобы я мог передать его в Stitch и обработать для меня сеансы.

Сделано попыток

  1. Обновлены секреты клиента oauth2-google.
  2. Настройка ключа подписи SHA-1 для приложения Android.
  3. Убедитесь, что я не делал опечатки, подобные этому сообщению .
  4. Явно запрашиваю проверку подлинности серверакод, вызвав requestServerAuthCode в Builder, например:
    GoogleSignInOptions gso = 
        new GoogleSignInOptions
            .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .requestServerAuthCode(getResources()
                .getString(R.string.server_client_id)) 
                     // ^~~ gets server_client_id from string.xml
             .build();

Подобный вопрос можно найти здесь .Учитывая, что этот вопрос без ответа не был решен, я не думаю, что объединение двух вопросов целесообразно.

Я честно озадачен, все вклады приветствуются.

...