2016-08-03 30 views
6

Teraz, gdy Plus.API jest przestarzałe w Google Play Services 9.4, jaki jest prawidłowy sposób uzyskania kręgów Google Plus dla uwierzytelnionego użytkownika w aplikacji Android?Przestarzała Plus.PeopleApi.load

teraz mamy przestarzała metoda załadunku oraz użytkownicy Plus.PeopleApi.load

Nowa dokumentacja mówi:

Jeśli Twoja aplikacja potrzebuje informacji społecznej i danych w profilu bardziej rozległe, Sprawdź Android Kontakt Provider lub krzyża -platform People API.

Więc powinienem iść z Android Kontakt Provider, który wydaje się być trudne alternatywa (Bo mam filtrować kontakty z kursorów, a także zarządzać uprawnieniami Runtime).

Dowolna łatwa alternatywa dla poprzednia nieaktualna metoda, aby uzyskać listę kręgów G + dla użytkownika?

+0

uzywasz API Plus, teraz zalecając Kontakt API * lub * dostawcę –

+0

Jak powiedziałem mowa powyżej, wiem, że te rozwiązania istnieją. Ale są one zbyt trudnymi alternatywami tego, co było wcześniej. Nie sądzę, że używanie kursorów i zarządzanie uprawnieniami środowiska wykonawczego jest alternatywą dla prostej metody. –

+0

Kursory są tylko dla Dostawcy, tak? Nie [interfejs API kontaktów] (https://developers.google.com/google-apps/contacts/v3 /) –

Odpowiedz

4

Google+ Ludzie API zostaną ostatecznie całkowicie przestarzałe 2017 Q1, patrz poniżej notatek dezaprobata dla szczegółów:

Android ogłoszenie: https://developers.google.com/+/mobile/android/api-deprecation

ogłoszenie końcowych REST: https://developers.google.com/+/web/people/#retrieve-a-collection-of-people

Należy więc rozważyć alternatywne zasugerował i nie tworzył nowych funkcji opartych na znajomych z kręgów G +, ponieważ żadne dane nie będą dostępne dla nowych użytkowników z zakresem plus.login.

Jeśli nie chcesz żądać uprawnień środowiska wykonawczego, nadal można uzyskać kontakty zalogowanego użytkownika od People REST API (Należy pamiętać, że jest to coś innego niż interfejs API G + People). Ponadto, jeśli potrzebujesz informacji z profilu zalogowanego użytkownika, innych niż pierwsza/ostatnia/wyświetlana nazwa, adres e-mail i adres URL obrazu profilu (który jest już dostępny w interfejsie API logowania), powinieneś także użyć tego samego nowego interfejsu API People.

Na Androidzie, kiedy trzeba Kontakt danych (w odpowiednim kontekście, tłumacząc użytkownikowi dlaczego prosisz o kontaktach informacje. NIE zażądać zakresu kontaktów z góry w przednie drzwi logowania Aktywny)

// 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' 

Następnie wpisz kod logowania.

// 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 

Następnie można użyć nowej aplikacji People Api do pobrania listy kontaktów.

/** 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

gdzie jest "googleSignInAccount"? –

+1

Użyj GoogleSignInApi, aby uzyskaćSignInIntent (mGoogleApiClient), i uruchom intencję; następnie w onActivityResult, będziesz mógł uzyskać GoogleSignInAccount. Więcej informacji znajdziesz w tym dokumencie: https://developers.google.com/identity/sign-in/android/sign-in –

+0

Dzięki Isabello, pomógłbyś mi w tym interfejsie People [problem] (http://stackoverflow.com/questions/40278457/android-google-people-api-error-tokenresponseexception-missing-parameter-code)? Wielkie dzięki ! –

Powiązane problemy