首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不推荐的Plus.PeopleApi.load

不推荐的Plus.PeopleApi.load
EN

Stack Overflow用户
提问于 2016-08-03 12:38:55
回答 1查看 1.6K关注 0票数 6

既然Plus.APIGoogle Play Services 9.4中已不再受欢迎,那么在安卓应用程序上为认证用户获取Google圈的正确方法是什么呢?

现在我们已经不再推荐加载+用户Plus.PeopleApi.load的方法了。

新的文件说:

如果您的应用程序需要社会信息和更广泛的个人资料,请查看Android联系人提供商或跨平台人员API。

因此,我应该使用Android联系人提供商,这似乎是一个很难的选择(因为我必须过滤与游标的联系人,并管理运行时权限)。

是否有任何简单的方法替代以前的不推荐方法,只为用户获取G+圈列表?

EN

回答 1

Stack Overflow用户

发布于 2016-08-20 01:51:56

Google+ People API最终将被完全废弃为2017年Q1,详情请参见下面的弃用说明:

安卓发布公告:https://developers.google.com/+/mobile/android/api-deprecation

REST端点声明:https://developers.google.com/+/web/people/#retrieve-a-collection-of-people

因此,您应该考虑建议的替代方案,而不是基于G+圈好友构建新特性,因为没有数据可供具有plus.login范围的新用户使用。

如果您不想请求运行时权限,您仍然可以从People REST API获得登录用户的联系人(注意,这与G+人员API不同)。此外,如果您需要在用户的配置文件信息中签名,而不是第一个/最后/显示名称、电子邮件和配置文件图片url (这已经由登录API提供),您还应该使用相同的new。

在Android上,当您需要联系人数据(上下文中是)时,请向用户解释您为什么要询问他们的联系人信息。不要在您的前门登录活动中预先请求联系人范围)

代码语言:javascript
复制
// 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'

然后写登录码。

代码语言:javascript
复制
// 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

然后可以使用new检索联系人列表。

代码语言:javascript
复制
/** 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();
        ...
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38743940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档