Проверить данные для входа в Google с Android?

Я хотел бы связать учетную запись приложения с Google. Почти у каждого пользователя Android будет учетная запись GMail. Итак, я прочитал счета:

private String[] getAccountNames(){
    mAccountManager = AccountManager.get(this);
    Account[] accounts = mAccountManager.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE);
    String[] names = new String[accounts.length];
    for (int i=0;i<names.length;i++){
        names[i] = accounts[i].name;
        Toast.makeText(this, accounts[i].name, Toast.LENGTH_LONG).show();
    }
    return names;
}

Пользователь может выбрать одну учетную запись и должен ввести пароль, чтобы подтвердить доступ к этой учетной записи и связать ее с приложением. Как я могу проверить правильность пароля? На каком сервере проверять логин? Мне просто нужен ответ (правда или ложь), если вход в систему был успешным или нет.


person JavaForAndroid    schedule 07.12.2013    source источник


Ответы (2)


Вы не должны спрашивать пароль Gmail у пользователей - это очень небезопасно, люди не любят давать его какому-либо приложению, оно может отправить его кому угодно. Кроме того, если пользователи используют двухэтапную аутентификацию, вам также необходимо справиться с этим — это будет сложно реализовать правильно.

Вместо этого вы должны запросить токен аутентификации у Android. С помощью этих токенов вы можете проверить с клиента (например, используя этот URL-адрес: https://www.googleapis.com/oauth2/v1/tokeninfo?id_token=[your-id-token-here]), а также с вашего сервера, это учетная запись пользователя. Подробнее об этом можно прочитать в этом сообщении блога: http://android-developers.blogspot.com/2013/01/verifying-back-end-calls-from-android.html

person hunyadym    schedule 07.12.2013

Вы должны запросить разрешение пользователей и получить токен, используя это:

GoogleAuthUtil.getToken(activity, account, "oauth2:https://www.googleapis.com/auth/userinfo.profile");

После того, как пользователь одобрит ваш запрос, вышеуказанный вызов вернет токен, который вы можете использовать для выполнения вызовов API от имени пользователя.

person gtsouk    schedule 27.12.2013