Устаревший Plus.PeopleApi.load

Теперь, когда Plus.API устарела в Google Play Services 9.4, как правильно получить круги Google Plus для аутентифицированного пользователя в приложении Android?

Теперь у нас устарел способ загрузки плюс пользователи Plus.PeopleApi.load

Новая документация гласит:

Если вашему приложению нужна социальная информация и более широкие данные профиля, обратитесь к поставщику контактов Android или кроссплатформенному API People.

Поэтому я должен пойти с поставщиком контактов Android, который кажется трудной альтернативой (потому что я должен фильтровать контакты с помощью курсоров, а также управлять разрешениями времени выполнения).

Какие-нибудь простые альтернативы предыдущему устаревшему методу, чтобы просто получить список кругов G+ для пользователя?

1 ответ

API пользователей Google+ в конечном итоге полностью устареет в первом квартале 2017 года, подробности см. Ниже.

Объявление для Android: https://developers.google.com/+/mobile/android/api-deprecation

Объявление конечной точки REST: https://developers.google.com/+/web/people/

Поэтому вам следует рассмотреть предложенные альтернативы, а не создавать новые функции на основе друзей G+ Circle, поскольку для новых пользователей с областью plus.login данные не будут доступны.

Если вы не хотите запрашивать разрешения во время выполнения, вы все равно можете получить контакты пользователя, выполнившего вход, из People REST API (обратите внимание, что это нечто отличное от G+ People API). Кроме того, если вам нужна информация о профиле вошедшего в систему пользователя, отличная от имени, фамилии, имени, адреса электронной почты и URL-адреса изображения профиля (которая уже предоставляется API входа в систему), вам также следует использовать тот же новый API-интерфейс People.

В Android, когда вам нужны данные о контактах (в контексте, объясняя пользователю, почему вы запрашиваете информацию о его контактах. НЕ запрашивайте область контактов заранее в вашей активности входа на вход)

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

Затем напишите код входа.

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

Затем вы можете использовать новый People Api для получения списка контактов.

/** 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();
        ...
    }
}
Другие вопросы по тегам