5

Мое приложение позволяет пользователям входить в систему с помощью Google Plus и получать их имя и адрес электронной почты. Я пытаюсь получить доступ к токену.Доступ к токену: null. com.google.android.gms.auth.GoogleAuthException: неизвестно

кода для доступа к фишке:

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(); 

Ошибка:

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 

Я пробовал различные решения, которые я мог бы найти на StackOverflow. На данный момент я использую идентификатор клиента из «Учетной записи службы» от dev console, я также попытался использовать его для «Идентификатора клиента для Android-приложения», он по-прежнему показал ту же ошибку.

Пожалуйста, дайте мне знать, что я делаю неправильно? Благодарю.

ответ

5

Я решил этот вопрос, заменив эту строку

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

с этим

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

я получил маркер доступа, и мне было интересно, если я делаю правильно. Поэтому я подтвердил правильность маркера. Я попытался поехать по этому адресу, я заменил accessToken на то, что я получил.

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

Он показал мне такой выход.

{ 
    "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" 
    } 

В issued_to он показал мне свой идентификатор клиента для Android приложения, которое означает этот знак выдается на мой идентификатор клиента. Поэтому я предполагаю, что я на правильном пути.

 Смежные вопросы

  • Нет связанных вопросов^_^