Autenticação do Google com um servidor back-end necessário

Eu estou seguindoestas instruções (https://developers.google.com/identity/sign-in/android/backend-auth) para obter um token de ID a ser enviado ao meu back-end, mas quando definoString scopes = "audience:server:client_id:" + Service.SERVER_CLIENT_ID; (Sim oSERVER_CLIENT_ID não é o ID do cliente Android) Falha ao obter um token e gera esse erro.

E/Login: com.google.android.gms.auth.GoogleAuthException: Unknown

No entanto, quando eu uso o seguinte escopoString scopes = "oauth2:profile email";

Recebo com sucesso um token 'mas não é o tempo que esperava e tenho medo de que esteja errado.

Minhas perguntas são ...

1) Por que oscopes = "audience:server:client_id:" + SERVER_CLIENT_ID; usado no trabalho de guia?

2) É o token que recebo usandoString scopes = "oauth2:profile email"; seguro para verificar um usuário em um back-end?

O código está abaixo.

@Override
    protected String doInBackground(Void... params) {
        String accountName = Plus.AccountApi.getAccountName(googleApiClient);
        Account account = new Account(accountName, GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE);
        //String scopes = "oauth2:profile email";
        String scopes = "audience:server:client_id:" + Service.SERVER_CLIENT_ID; // Not the app's client ID.
        Log.d(TAG, "Account Name: " + accountName);
        Log.d(TAG, "Scopes: " + scopes);

        try {
            userIdToken = GoogleAuthUtil.getToken(getApplicationContext(), account, scopes);

            return userIdToken;
        } catch (IOException e) {
            Log.e(TAG, "IOError retrieving ID token.", e);
            return null;
        } catch (UserRecoverableAuthException e) {
            startActivityForResult(e.getIntent(), RC_SIGN_IN);
            return null;
        } catch (GoogleAuthException e) {
            Log.e(TAG, "GoogleAuthError retrieving ID token.", e);
            return null;
        }
    }

questionAnswers(1)

yourAnswerToTheQuestion