Учетная запись Google получает токен

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

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 и системное push-уведомление:

уведомление

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

диалог

Когда пользователь нажимает «ok», все последующие итерации, получающие токен, получат успех.

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

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

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

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

Вы можете прочитать все об этом здесь: авторизация с помощью Google для API REST , области входа в систему

Решаемые. Необходимо использовать этот метод:

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