2016-08-03 68 views
6

Jetzt, da Plus.API in Google Play Services 9.4 veraltet ist, was ist der richtige Weg, um Google Plus Kreise für authentifizierte Benutzer auf Android-Anwendung zu erhalten?Veraltet Plus.PeopleApi.load

Jetzt haben wir veraltete Verfahren zum Laden und Benutzer Plus.PeopleApi.load

Neue Dokumentation sagt:

Wenn Ihre App soziale Informationen und umfangreiche Profildaten benötigt, Check-out der Android Kontakte Provider oder das Kreuz -Plattform Menschen API.

Also sollte ich mit Android Kontakte Provider gehen, die eine harte Alternative zu sein scheint (Weil ich filtern Kontakte mit Cursor haben und auch Runtime Berechtigungen verwalten).

Alle einfachen Alternativen vorherige veraltete Methode nur Liste von G + Kreise für Benutzer zu bekommen?

+0

Sie wurden mit dem Plus-API, die Kontakte API * oder * den Provider empfiehlt es jetzt –

+0

Wie ich in Frage oben gesagt, weiß ich, dass diese Lösungen existieren. Aber sie sind zu harte Alternativen von dem, was vorher war. Ich glaube nicht, dass die Verwendung von Cursors und die Verwaltung von Laufzeitberechtigungen die Alternative der einfachen Methode ist, die war. –

+0

Cursor sind nur für den Provider, ja? Nicht die [Kontakte API] (https://developers.google.com/google-apps/contacts/v3 /) –

Antwort

4

Google+ Menschen API wird schließlich 2017 Q1 vollständig veraltet, unter deprecation Anmerkungen Details siehe:

Android Ankündigung: https://developers.google.com/+/mobile/android/api-deprecation

REST-Endpunkt-Mitteilung: https://developers.google.com/+/web/people/#retrieve-a-collection-of-people

So sollten Sie Alternativen in Betracht ziehen vorgeschlagen und keine neuen Funktionen basierend auf G + Circle Freunden zu erstellen, da keine Daten für neue Benutzer mit dem plus.login Bereich verfügbar sind.

Wenn Sie keine Laufzeitberechtigungen anfordern möchten, können Sie weiterhin angemeldete Benutzerkontakte von People REST API erhalten (Beachten Sie, dass dies etwas anderes als die G + People API ist). Wenn Sie die Profilinformationen eines anderen Benutzers als den ersten/letzten/angezeigten Namen, die E-Mail-Adresse und die Profilbild-URL (die bereits von der Anmelde-API bereitgestellt wird) benötigen, sollten Sie auch dieselbe neue Personen-API verwenden.

Auf Android, wenn Sie Kontakten Daten benötigen (Im Zusammenhang mit dem Benutzer zu erklären, warum sie ihre Kontakte Informationen bitten. Fordern NICHT Umfang Kontakte im Voraus in der Front-Tür Sign-In Aktivität)

// Add dependencies (SDKs will be downloaded from mavenCentral) 
compile 'com.google.api-client:google-api-client:1.22.0' 
compile 'com.google.api-client:google-api-client-android:1.22.0' 
compile 'com.google.apis:google-api-services-people:v1-rev4-1.22.0' 

Dann schreiben Sie den Anmeldecode.

// Make sure your GoogleSignInOptions request email & contacts scopes as shown below 
GoogleSignInOptions gso = 
     new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
      .requestEmail() 
      .requestScopes(new Scope(PeopleScopes.CONTACTS_READONLY))) 
      .build(); 

// Follow official doc to sign-in. 
// https://developers.google.com/identity/sign-in/android/sign-in 

Dann können Sie neue People Api verwenden, um Kontaktliste abzurufen.

/** Global instance of the HTTP transport. */ 
private static HttpTransport HTTP_TRANSPORT = AndroidHttp.newCompatibleTransport(); 
/** Global instance of the JSON factory. */ 
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); 

// On worker thread 
GoogleAccountCredential credential = 
     GoogleAccountCredential.usingOAuth2(MainActivity.this, PeopleScopes.CONTACTS_READONLY); 
credential.setSelectedAccount(
     new Account(googleSignInAccount.getEmail(), "com.google")); 
People service = new People.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential) 
       .setApplicationName(APPLICATION_NAME /* whatever you like */) 
       .build(); 
ListConnectionsResponse response = service.people().connections() 
     .list("people/me") 
     // request 20 contacts 
     .setPageSize(20) 
     .execute(); 
List<Person> connections = response.getConnections(); 
if (connections != null && connections.size() > 0) { 
    for (Person person : connections) { 
     List<Name> names = person.getNames(); 
     if (names != null && names.size() > 0) { 
      Log.i(TAG, "Name: " + person.getNames().get(0).getDisplayName()); 
     } else { 
      Log.i(TAG, "No names available for connection."); 
     } 
     List<Gender> genders = person.getGenders(); 
     String ageRange = person.getAgeRange(); 
     List<Birthday> birthdays = person.getBirthdays(); 
     ... 
    } 
} 
+0

Woher kommt der 'googleSignInAccount' von bitte? –

+1

Verwenden Sie GoogleSignInApi, umSignInIntent (mGoogleApiClient) zu erhalten, und starten Sie die Absicht. Dann können Sie in onActivityResult GoogleSignInAccount abrufen. Weitere Informationen finden Sie in diesem Dokument: https://developers.google.com/identity/sign-in/android/sign-in –

+0

Danke, Isabella, würden Sie mir bei dieser People API helfen [Problem] (http://stackoverflow.com)/questions/40278457/android-google-menschen-api-fehler-tokenresponseexception-missing-parameter-code)? Danke vielmals ! –