Google-Authentifizierung mit einem Back-End-Server erforderli

Ich folgediese Anleitung (https: //developers.google.com/identity/sign-in/android/backend-aut) um ein ID-Token an mein Backend zu senden, aber wenn ich @ setString scopes = "audience:server:client_id:" + Service.SERVER_CLIENT_ID; (Ja dasSERVER_CLIENT_ID ist nicht die Android-Client-ID) Ich erhalte kein Token und werfe diesen Fehler.

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

Allerdings, wenn ich stattdessen den folgenden Bereich verwendeString scopes = "oauth2:profile email";

Ich erhalte erfolgreich ein 'a'-Token, aber es ist nicht so lange, wie ich es erwartet habe, und ich fürchte, es könnte falsch sein.

Meine Fragen sind ...

1) Warum funktioniert das @ nicscopes = "audience:server:client_id:" + SERVER_CLIENT_ID; in der Anleitung Arbeit verwendet?

2) Ist das Token, das ich mit @ erhaltString scopes = "oauth2:profile email"; eine sichere für die Überprüfung eines Benutzers auf einem Backend?

Der Code ist unten.

@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;
        }
    }

Antworten auf die Frage(2)

Ihre Antwort auf die Frage