Получить имя пользователя из Google Plus в андроид
Я включил Google plus с моим Android-приложением. Все работает нормально, я также подключен к Google plus, но я не могу получить имя текущего пользователя, зарегистрированного.
public void onConnected(Bundle connectionHint) {
String personName="Unknown";
if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
personName = currentPerson.getDisplayName();
}
}
Plus.PeopleApi.getCurrentPerson(mGoogleApiClient)
этот метод всегда возвращает null.
Любая помощь будет оценена.
Благодарю.
Ответы
Ответ 1
Вы должны добавить эту строку:
Plus.PeopleApi.loadVisible(mGoogleApiClient, null).setResultCallback(this);
Вот так:
public void onConnected(Bundle connectionHint) {
/* This Line is the key */
Plus.PeopleApi.loadVisible(mGoogleApiClient, null).setResultCallback(this);
String personName="Unknown";
if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
personName = currentPerson.getDisplayName();
.........
}
}
Ответ 2
Для меня причиной этого вызова, возвращающего null, было то, что API Google+ не был включен для моего приложения. Перейдите в https://console.developers.google.com, выберите свой проект и включите API Google+, чтобы он работает!
Ответ 3
В моем случае null возвращается, потому что я добавил эту строку:
addScope (новый масштаб (Scopes.EMAIL))
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API)
.addScope(new Scope(Scopes.PROFILE))
//.addScope(new Scope(Scopes.EMAIL))
.build();
================= ОБНОВЛЕНИЕ =========================
Области должны быть установлены следующим образом:
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API)
.addScope(Plus.SCOPE_PLUS_PROFILE)
.addScope(Plus.SCOPE_PLUS_LOGIN)
.build();
Ответ 4
Убедитесь, что вы создали как отладочный, так и производственный идентификатор клиента по хранилищам SHA1.
Он отображает вкладку API и Auth → Учетные данные вашего проекта .
Настройка OAuth 2.0 для документации на Android говорит:
В терминале запустите утилиту Keytool, чтобы получить отпечаток SHA1 для общедоступного сертификата с открытым кодом .apk.
... пример для debug-keystore...
Важно: при подготовке к выпуску приложения вашим пользователям выполните следующие действия и создайте новый идентификатор клиента OAuth 2.0 для своего производственного приложения. Для производственных приложений используйте свой собственный закрытый ключ для подписи файла .apk производственного приложения.
Ответ 5
Я пробовал много подходов, но я все еще сталкивался с той же проблемой. Наконец, в файле app build.gradle я обнаружил, что мой applicationId не был таким же, как имя пакета в Credentials. Я исправил это, и все работало как шарм.
Таким образом, убедитесь, что:
- applicationId в файле build.gradle
- имя пакета в AndroidManifest.xml
- имя пакета в Credentials
все одинаковы.
Надеюсь, это поможет кому-то.