Доступ к идентификатору учетной записи Google / имени пользователя через Android - PullRequest
69 голосов
/ 11 февраля 2010

Как получить доступ к идентификатору / имени пользователя учетной записи Google в коде? Я создаю приложение, которое будет вызывать веб-службу для хранения данных, и я хочу идентифицировать личность человека, отправляющего данные.

Ответы [ 7 ]

43 голосов
/ 10 сентября 2011

Я столкнулся с той же проблемой, и эти две ссылки для меня решены:

Первый из них: Как мне восстановить зарегистрированную учетную запись Google на телефонах Android?

Который представляет код для получения учетных записей, связанных с телефоном. В основном вам понадобится что-то вроде этого:

AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
Account[] list = manager.getAccounts();

И добавить разрешения в AndroidManifest.xml

<uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"></uses-permission>

Кроме того, если вы используете эмулятор, следующая ссылка поможет вам настроить его с учетной записью: Android Emulator - проблема при создании учетных записей пользователей

В основном, это говорит о том, что вы должны создать Android-устройство на основе уровня API, а не версии SDK (как это обычно делается).

8 голосов
/ 11 августа 2014

Этот метод для получения имени пользователя Google:

 public String getUsername() {
    AccountManager manager = AccountManager.get(this);
    Account[] accounts = manager.getAccountsByType("com.google");
    List<String> possibleEmails = new LinkedList<String>();

    for (Account account : accounts) {
        // TODO: Check possibleEmail against an email regex or treat
        // account.name as an email address only for certain account.type
        // values.
        possibleEmails.add(account.name);
    }

    if (!possibleEmails.isEmpty() && possibleEmails.get(0) != null) {
        String email = possibleEmails.get(0);
        String[] parts = email.split("@");
        if (parts.length > 0 && parts[0] != null)
            return parts[0];
        else
            return null;
    } else
        return null;
}

Простой вызов этого метода ....

И получение пользователя Google в Gmail id ::

 accounts = AccountManager.get(this).getAccounts();
    Log.e("", "Size: " + accounts.length);
    for (Account account : accounts) {

        String possibleEmail = account.name;
        String type = account.type;

        if (type.equals("com.google")) {
            strGmail = possibleEmail;

            Log.e("", "Emails: " + strGmail);
            break;
        }
    }

После добавления разрешения в манифесте;

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.GET_ACCOUNTS" />
4 голосов
/ 09 мая 2017

Получение информации о профиле для вошедшего в систему пользователя. Используйте метод GoogleSignInResult.getSignInAccount, чтобы запросить информацию профиля для текущего вошедшего в систему пользователя. Вы можете вызвать метод getSignInAccount после успешного входа в систему.

GoogleSignInResult result = 
Auth.GoogleSignInApi.getSignInResultFromIntent(data);
GoogleSignInAccount acct = result.getSignInAccount();
String personName = acct.getDisplayName();
String personGivenName = acct.getGivenName();
String personFamilyName = acct.getFamilyName();
String personEmail = acct.getEmail();
String personId = acct.getId();
Uri personPhoto = acct.getPhotoUrl();
2 голосов
/ 09 апреля 2018

Использованы эти строки:

AccountManager manager = AccountManager.get(this);
Account[] accounts = manager.getAccountsByType("com.google");

длина учетных записей массива всегда равна 0.

2 голосов
/ 16 сентября 2015
if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
  Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
  String userid=currentPerson.getId(); //BY THIS CODE YOU CAN GET CURRENT LOGIN USER ID
}
0 голосов
/ 22 апреля 2015
String name = android.os.Build.USER;

if (!TextUtils.isEmpty(name)) {
    nameEdit.setText(name);
}
0 голосов
/ 23 апреля 2013

Существует пример от Google, который перечисляет существующие учетные записи Google и генерирует токен доступа при выборе. Вы можете отправить этот токен доступа на сервер, чтобы получить из него соответствующие данные для идентификации пользователя.

Вы также можете получить идентификатор электронной почты из токена доступа, для этого вам нужно изменить ОБЛАСТЬ

Пожалуйста, пройдите Мое сообщение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...