Как получить токен oauth 2.0 из API Google Plus в Android?

У меня проблема с получением токена oauth 2.0 из Google API. В настоящее время я пишу приложение для android, где я хочу иметь три метода входа - через facebook (выполнено), через настраиваемого поставщика oauth 2.0 (также выполнено) и через google plus - это создает много проблем. для меня. Мне нужно получить токен доступа на устройстве и передать его бэкэнд-приложению.

Я пробовал использовать GoogleApiClient (PlusClient устарел - через http://developer.android.com/reference/com/google/android/gms/plus/PlusClient.html), но не видит такой метод, как getAccessToken или что-то подобное.

В настоящее время я пытаюсь использовать библиотеку socialauth, но я застрял из-за отсутствия документации (вот код)

private SocialAuthAdapter mSocialAdapter;
... in onCreate()
mSocialAdapter = new SocialAuthAdapter(new GooglePlusSocialAuthListener());
try {
    mSocialAdapter.addConfig(Provider.GOOGLEPLUS, key_from_google_developers_console, secret, 
    "https://www.googleapis.com/auth/userinfo.profile+https://www.googleapis.com/auth/userinfo.email");
    mSocialAdapter.addCallBack(Provider.GOOGLEPLUS, 
   "http://localhost:3000/api/auth/gplus/callback");
}
catch (Exception e) {
   e.printStackTrace();
}

mSocialAdapter.authorize(LoginActivity.this, Provider.GOOGLEPLUS);
Log.e("TOKEN HERE ", mSocialAdapter.getCurrentProvider().getAccessGrant().getKey());

Кто-нибудь может помочь мне получить этот токен? Неважно, через socialauth или через GoogleApiClient.


person Zkart    schedule 13.03.2014    source источник


Ответы (1)


Понятия не имею о социальной аутентификации, но для получения токена из сервисов Google Play вы фактически используете другой класс, GoogleAuthUtil.

Я изложил суть этого в https://gist.github.com/ianbarber/9607551 - в соответствующей части:

String scopes = "oauth2:profile email"; // magic string! oauth2: followed by space sep scopes.
String token = null;
try {
    token = GoogleAuthUtil.getToken(getApplicationContext(), accountName, scopes);
} catch (IOException e) {
    Log.e(TAG, e.getMessage());
} catch (UserRecoverableAuthException e) {
    startActivityForResult(e.getIntent(), REQ_SIGN_IN_REQUIRED);
} catch (GoogleAuthException e) {
    Log.e(TAG, e.getMessage());
}
return token;

Имя учетной записи можно получить в GoogleApiClient Plus.Account API http://developer.android.com/reference/com/google/android/gms/plus/Account.html.

person Ian Barber    schedule 17.03.2014
comment
Это именно то, что мне нужно! Не могу поверить, что это так просто. Спасибо! - person Zkart; 19.03.2014