2014-11-07 3 views
6

У меня проблема с kitkat api, в то время как tringy, чтобы получить токен доступа к сервисам google, google music в моем случае. Таким образом, если пользователь пытается получить маркер на первый, используя следующий метод:Учетная запись Google получает токен

public String getAuthToken(Account account) 
      throws AuthenticatorException, IOException { 
     String s1; 
     if (account == null) { 
      Log.e("MusicAuthInfo", "Given null account to MusicAuthInfo.getAuthToken()", new Throwable()); 
      throw new AuthenticatorException("Given null account to MusicAuthInfo.getAuthToken()"); 
     } 
     String s = getAuthTokenType(mContext); 
     try { 
      s1 = AccountManager.get(mContext).blockingGetAuthToken(account, s, true); 
     } catch (OperationCanceledException operationcanceledexception) { 
      throw new AuthenticatorException(operationcanceledexception); 
     } 
     if (s1 == null) { 
      throw new AuthenticatorException("Received null auth token."); 
     } 

     return s1; 
    } 

здесь я получаю s1 == null и оповещения системы нажимной:

notification

Когда пользователь нажмите на уведомление, в следующем диалоговом окне появится:

dialog

Когда пользователь нажимает "оК", все последующие итерации получение маркера ПОЛУЧИТЬ succe песчаники

Вопрос: Как обойти это подтверждение или показать только диалог, не нажимая на уведомление?

ответ

2

Это не прямой ответ на ваш вопрос, но вместо этого вы можете использовать Службы Google Play.

String token = GoogleAuthUtil.getToken(context, userEmail, "oauth2:https://mail.google.com/"); 

Вам нужно просто указать область oauth2, в которой вы нуждаетесь. Например, для Google+ вам понадобится «https://www.googleapis.com/auth/plus.login» вместо того, что я публикую в фрагменте для Gmail. Вы также можете указать несколько областей в одном запросе на токен. Запрос разрешения появляется сразу.

Вы можете прочитать все об этом здесь: Authorizing with Google for REST APIs, Login scopes

+0

Я не могу найти возможности для Google включить музыку sservice – smail2133

+0

Ну, чтобы получить простор для маркера в первую очередь необходимо иметь представление о том, который API вы смотрите область для. Среди доступных API-интерфейсов нет Google Play Music. Вы можете проверить их все здесь: [OAuth 2.0 Playground] (https://developers.google.com/oauthplayground/), и вам нужно убедиться, что API включен в консоли Google Developers Console (https: // .developers.google.com/проект). Проверьте, какой API дает вам привилегии. Например, Google+ может включать их. – Chris

-1

решаемая. Требуется использовать этот метод:

Bundle result = AccountManager.get(activity).getAuthToken(account, s, new Bundle(), activity, new AccountManagerCallback<Bundle>() { 
    @Override 
    public void run(AccountManagerFuture<Bundle> future) { 
     try { 
      Log.e("xxx", future.getResult().toString()); 
     } catch (OperationCanceledException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (AuthenticatorException e) { 
      e.printStackTrace(); 
     } 
    } 

}, null).getResult(); 
Смежные вопросы