Як отримати доступ до ідентифікатора / імені користувача облікового запису Google у коді? Я створюю додаток, який буде викликати веб-службу для зберігання даних, і я хочу ідентифікувати особу, яка подає дані.
Як отримати доступ до ідентифікатора / імені користувача облікового запису Google у коді? Я створюю додаток, який буде викликати веб-службу для зберігання даних, і я хочу ідентифікувати особу, яка подає дані.
Відповіді:
Я зіткнувся з тією ж проблемою, і ці два посилання вирішили для мене:
Перший - це такий: Як отримати зареєстрований обліковий запис 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 - Проблеми зі створенням облікових записів користувачів
В основному там сказано, що ви повинні створити пристрій Android на основі рівня API, а не версії SDK (як це зазвичай роблять).
Цей спосіб отримати ім’я користувача 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:
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" />
Отримання інформації про профіль для користувача, який увійшов у систему. Використовуйте метод 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();
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
}
Plus
символ Не вдається вирішити ?
Використовували ці рядки:
AccountManager manager = AccountManager.get(this);
Account[] accounts = manager.getAccountsByType("com.google");
довжина рахунків масиву завжди дорівнює 0.
Існує зразок від google, який перелічує існуючі облікові записи google і генерує маркер доступу при виборі; ви можете надіслати цей маркер доступу на сервер, щоб отримати відповідні деталі з нього для ідентифікації користувача.
Ви також можете отримати ідентифікатор електронної пошти з маркера доступу
Будь ласка, перейдіть до мого повідомлення
String name = android.os.Build.USER;
if (!TextUtils.isEmpty(name)) {
nameEdit.setText(name);
}