Я пытаюсь получить токен доступа Google Plus для подписанного пользователя в приложении для Android. Я делаю это с помощью следующего кода, который следует предложения, сделанные here, here и here:GoogleAuthUtil.getToken() blocks
private class RetrieveTokenTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
int REQUEST_CODE_TOKEN_AUTH = 466453; // Any number, not really using it anyway.
String accountName = params[0];
String scopes = "oauth2:" + Plus.SCOPE_PLUS_LOGIN;
String token = null;
try {
token = GoogleAuthUtil.getToken(getActivity(), accountName, scopes);
} catch (IOException e) {
Log.e(TAG, e.getMessage());
} catch (UserRecoverableAuthException e) {
startActivityForResult(e.getIntent(), REQUEST_CODE_TOKEN_AUTH);
} catch (GoogleAuthException e) {
Log.e(TAG, e.getMessage());
}
return token;
}
}
Я называю это так:
@Override
public void onConnected(Bundle connectionHint) {
mSignInClicked = false;
Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
try {
String accessToken = (new RetrieveTokenTask()).execute(Plus.AccountApi.getAccountName(mGoogleApiClient)).get();
} catch (Exception ex) {
Log.e(TAG, ex.getMessage());
}
}
У меня есть следующие разрешения в моем AndroidManifest (среди другие):
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
проблема не в том, что при вызове GoogleAuthUtil.getToken()
, нет никакого прогресса бей и он просто замерзнет там. Как я могу это исправить?
Это просто быстро пытаются убедиться, что маркер поиска работает отлично. Я уточню, что после того, как я исправлю это, но реальный вопрос - почему метод getToken() не делает никакого прогресса? –
@ VladSchnakovszki: Сначала удалите метод 'get()', затем проверьте его –
@ VladSchnakovszki: а также убедитесь, что доступно разрешение INTERNET. –