Bekommen User-Geburtstag & Geschlecht mit Google Sign-In Android
Habe ich integriert Google Sign-In
in meiner Anwendung. Ich kann Benutzer Email
und DisplayName
. Nun, ich will Benutzers Birthdate
und Gender
.
Ich habe alle erforderlichen requests
& Scopes
in GoogleApiClient
alle gewährt, die von der API. hier ist code.
//[START configure_signin]
//Configure sign-in to request the user's ID, email address, and basic
//profile. ID and basic profile are included in DEFAULT_SIGN_IN.
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestProfile() <- This
.requestScopes(
new Scope(Scopes.PLUS_ME), new Scope(Scopes.PROFILE) <- This
)
.build();
//[END configure_signin]
//[START build_client]
//Build a GoogleApiClient with access to the Google Sign-In API and the
//options specified by gso.
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this /* FragmentActivity */, new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
//An unresolvable error has occurred and Google APIs (including Sign-In) will not
//be available.
Log.d(TAG, "onConnectionFailed:" + connectionResult);
}
} /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.addScope(new Scope(Scopes.PLUS_ME)) <- This
.addScope(new Scope(Scopes.PROFILE)) <- This
.build();
//[END build_client]
Hier ist die gewährten Bereiche in GoogleSignInAccount
private void setupUserData(GoogleSignInAccount acct) {
if (acct != null) {
mPrefs.setName(acct.getDisplayName());
mPrefs.setEmail(acct.getEmail());
if (acct.getPhotoUrl() != null) {
mPrefs.setPicURL(acct.getPhotoUrl().toString());
}
Set<Scope> scopes = acct.getGrantedScopes(); <- This
for (Scope scope : scopes) {
Log.d(TAG, "setupUserData: " + scope.toString()); <- This
}
}
}
Hier ist der log von gewährten scopes
D/SplashActivity: setupUserData: GrantedScopes size 6
D/SplashActivity: setupUserData: https://www.googleapis.com/auth/plus.me
D/SplashActivity: setupUserData: https://www.googleapis.com/auth/userinfo.email
D/SplashActivity: setupUserData: https://www.googleapis.com/auth/userinfo.profile
D/SplashActivity: setupUserData: email
D/SplashActivity: setupUserData: profile
D/SplashActivity: setupUserData: openid
Hier mein Google Mobile Service, die Abhängigkeit
compile 'com.google.android.gms:play-services-auth:10.2.0'
compile 'com.google.android.gms:play-services-plus:10.2.0'
Nun, ich weiß nicht, wie man Zugang zu user's profile information
.
- Wie hast u diese umzusetzen?
- Ich Verweise Sie auf die Verwendung
Facebook SDK
stattGoogle Plus
. Facebook SDK ist viel mehr unterstützende als Google Plus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie bereits in Die Leute und der Profil-Informationen, um zusätzliche Profil-Informationen und Kontakte eines Benutzers, verwenden Sie die Menschen API. Sie müssen die Zustimmung des Benutzers für den Zugriff auf diese Informationen durch Anforderung weitere Bereiche, wenn sich der Benutzer anmeldet.
Können Sie anrufen
Menschen.get
, übergeben im Namen einer Ressource, um private Kontakte und das öffentliche Profil-Daten für jede person. Wenn Ihr Antrag erfolgreich ist, enthält die Antwort eine Instanz einer Person einschließlich Geburtstag und Geschlecht.Können Sie möchten besuchen Sie die links habe ich weitere Informationen.
Hier ist das komplette Beispiel, hoffe es hilft für zukünftige Leser. Was die app tun wird Sie auf anmelden(Sign In-API enthalten Namen und E-Mail) zuerst, dann fordern Sie Geburtstag & Geschlecht(Personen-API-Authentifizierung verwendet wird, und speichern Sie es auf
SharedPreferences
für die Wiederverwendung auf der nächsten starten. Schließlich gibt es grundlegende Informationen und advanced (Geschlecht & Geburtstag) info.Erinnerung:
<uses-permission android:name="android.permission.INTERNET" />
im AndroidManifest.xml.implementation 'com.google.android.gms:play-services-auth:12.0.1'
,implementation 'com.google.apis:google-api-services-people:v1-rev255-1.23.0'
, undimplementation 'com.google.api-client:google-api-client-android:1.23.0'
imdependencies {}
vonbuild.gradle
.compileSdkVersion
,targetSdkVersion
, undappcompat-v7
von 27 auf 26, da bekam ich die Warnung, nachdem #2 Abhängigkeiten Hinzugefügt.signingConfigs {
debug {
storeFile file('<path to jks file>')
keyAlias '<your key alias>'
keyPassword '<your key password>'
storePassword '<your store password>'
}
}
in
build.gradle
, die jks-Datei generiert ausBuild
->Generated Signed APK...
->Create new...
keytool -exportcert -keystore <path to jks file> -list -v
zu bekommen, SHA1 hex-Schlüssel, dann Besuche Spielkonsole, füllen Sie in der Projekt-name, app-Paket-name, SHA1 hex-Schlüssel.Scopes.BIRTHDAY
in der Bibliothek, also muss ich hart codiert die Geburtstag-Endpunkt-URL"https://www.googleapis.com/auth/user.birthday.read"
, die den link bekommen von https://developers.google.com/people/v1/how-tos/authorizing#profile-scopes ODER "Show-Bereiche" in "Probieren Sie es-API" - panel auf https://developers.google.com/people/api/rest/v1/people/getaccount.getGivenName()
undaccount.getFamilyName()
.Gradle
Authentifizierung
PeopleApi
Ich hoffe, es hilft 🙂
Unten ist meine Antwort, hoffe es hilft dir.
Plus.PeopleAPI ist veraltet und im Google-Play-services 9.4 wie die Google-Erklärung Hinweise entnehmen Sie bitte der folgenden Lösungen mit Google-Menschen-API statt:
Bekommen person details in der neuen google sign-in-Play-Dienste 8.3 (Isabella Chen ' s Antwort);
Nicht bekommen privaten Geburtstag von Google-Plus-Konto, obwohl ausdrücklichen Wunsch
ENDE UPDATE
Zuerst von all, stellen Sie sicher, Sie haben geschaffen Google+ Profil für Ihr Google-Konto. Dann finden Sie auf den folgenden code:
und
Dann
Innen bauen.gradle-Datei
//Abhängigkeit für Google Sign-In
Können Sie einen Blick auf belo GitHub-Beispiel-Projekt. Hoffe das hilft und dein problem gelöst.
https://github.com/ngocchung/GoogleSignInDemo
Wenn Sie wollen neueste integration Folgen Sie bitte folgenden link, die haben eine schöne Dokumentation sowie kurz über den code, und alle parameter.
https://developers.google.com/identity/sign-in/android/start-integrating
fügen Sie diese in Ihre
build.gradle
Abhängigkeitenversuchen, diese
Mit Menschen-api können Sie abrufen, Geburtsdatum und Geschlecht Angaben.
Verwenden Sie die Abhängigkeit " com.google.apis:google-api-services-Leute:v1-rev4-1.22.0' in gradle zu zählen Menschen, die api.
Wichtig:
googleSignInAccount
ist das Konto, von dem das Geschlecht ist, gewonnen werden.GL
Quellen: