5

Mit meiner App können sich Nutzer mit Google Plus anmelden und erhalten ihren Namen und ihre E-Mail-Adresse. Ich werde versucht, auf das Token zuzugreifen.Zugriffstoken abgerufen: null. com.google.android.gms.auth.GoogleAuthException: Unknown

-Code, um das Token zuzugreifen:

Toast.makeText(this, "User is connected!", Toast.LENGTH_LONG).show();   
GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext()); 
     AccountManager am = AccountManager.get(this); 

     final Account[] accounts = am.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE); 

     AsyncTask<Void, Void, String> task2 = new AsyncTask<Void, Void, String>() { 
      public static final int REQUEST_CODE_TOKEN_AUTH = 100; 

      @Override 
      protected String doInBackground(Void... params) { 
       String mScope="audience:server:client_id:899555500747-38rpnq51of946grhdvofck7r8u5p09cd.apps.googleusercontent.com:api_scope:https://www.googleapis.com/auth/plus.login"; 
// Get the token for the current user 
       String token = null; 
       try { 
        token = GoogleAuthUtil.getToken(getApplicationContext(), Plus.AccountApi.getAccountName(mGoogleApiClient), mScope); 
        Log.i("G token", token); 
       } catch (IOException transientEx) { 
        // Network or server error, try later 
        Log.e(TAG, transientEx.toString()); 
       } catch (UserRecoverableAuthException e) { 
        // Recover (with e.getIntent()) 
        Log.e(TAG, e.toString()); 
        Intent recover = e.getIntent(); 
        startActivityForResult(recover, REQUEST_CODE_TOKEN_AUTH); 
       } catch (GoogleAuthException authEx) { 
        // The call is not ever expected to succeed 
        // assuming you have already verified that 
        // Google Play services is installed. 
        Log.e(TAG, authEx.toString()); 
       } 
       return token; 
      } 
      @Override 
      protected void onPostExecute(String token) { 
       Log.i(TAG, "Access token retrieved:" + token); 
      } 

     }; 
     task2.execute(); 

Fehler:

01-27 23:42:14.877 30994-31262/com.unicloud.mittal E/loginWithGooglePlus﹕ com.google.android.gms.auth.GoogleAuthException: Unknown 
01-27 23:42:14.877 30994-30994/com.unicloud.mittal I/loginWithGooglePlus﹕ Access token retrieved:null 

ich verschiedene Lösungen versucht haben, die ich auf Stackoverflow finden konnte. Im Moment verwende ich die Client-ID von "Service Account" von dev console, ich habe auch versucht, es für "Client-ID für Android-Anwendung" zu verwenden, es zeigte immer noch den gleichen Fehler.

Bitte lassen Sie mich wissen, was mache ich falsch? Vielen Dank.

Antwort

5

löste ich diese Frage, indem diese Zeile ersetzt

String mScope="audience:server:client_id:899555500747-38rpnq51of946grhdvofck7r8u5p09cd.apps.googleusercontent.com:api_scope:https://www.googleapis.com/auth/plus.login"; 

mit diesem

String mScope = "oauth2:https://www.googleapis.com/auth/plus.login"; 

ich das Zugriffstoken bekam, und ich habe mich gefragt, ob ich recht tue. Also habe ich überprüft, ob das Token korrekt war. Ich habe versucht, zu dieser Adresse zu gehen, ich ersetzte accessToken durch das Token, das ich abgerufen habe.

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=accessToken 

Es zeigte mir diese Art von Ausgabe.

{ 
    "issued_to": "xxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com", 
    "audience": "xxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com", 
    "user_id": "xxxxxxxxxxxxxxxxxxxxxxx", 
    "scope": "https://www.googleapis.com/auth/userinfo.profile https://gdata.youtube.com", 
    "expires_in": 3019, 
    "access_type": "online" 
    } 

Im issued_to zeigte es mir meine Client-ID für Android-Anwendung, die dieses Token Mittel an meine Client-ID ausgegeben. Ich nehme an, ich bin auf dem richtigen Weg.

Verwandte Themen