android - Plus.PeopleApi.getCurrentPerson 在 Play 服务 8.4 中已弃用。如何使用 GoogleSignInApi 获取用户的名字、姓氏和性别?

标签 android google-play-services google-signin google-plus-signin

使用 Play 服务 8.4,方法 getCurrentPerson已弃用,我使用 PeopleApi 获取用户的名字、姓氏和性别。

谁能告诉我如何使用其他方法获取已登录用户的信息?

最佳答案

更新:检查伊莎贝拉的回答。此答案使用已弃用的内容。

我自己找到了解决方案,所以如果有人遇到同样的问题,我会把它贴在这里。

虽然我一直在寻找使用 GoogleSignInApi 获取用户信息的解决方案,但找不到,我认为我们需要使用 Plus Api 来获取性别等信息。

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RC_SIGN_IN) {
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            handleSignInResult(result);
        }
    }

处理登录结果

private void handleSignInResult(GoogleSignInResult result)
    {
        Log.d(TAG, "handleSignInResult:" + result.isSuccess());
        if (result.isSuccess())
        {
            GoogleSignInAccount acct = result.getSignInAccount();
            Toast.makeText(getApplicationContext(),""+acct.getDisplayName(),Toast.LENGTH_LONG).show();

             Plus.PeopleApi.load(mGoogleApiClient, acct.getId()).setResultCallback(new ResultCallback<People.LoadPeopleResult>() {
                @Override
                public void onResult(@NonNull People.LoadPeopleResult loadPeopleResult) {
                    Person person = loadPeopleResult.getPersonBuffer().get(0);
                    Log.d(TAG,"Person loaded");
                    Log.d(TAG,"GivenName "+person.getName().getGivenName());
                    Log.d(TAG,"FamilyName "+person.getName().getFamilyName());
                    Log.d(TAG,("DisplayName "+person.getDisplayName()));
                    Log.d(TAG,"Gender "+person.getGender());
                    Log.d(TAG,"Url "+person.getUrl());
                    Log.d(TAG,"CurrentLocation "+person.getCurrentLocation());
                    Log.d(TAG,"AboutMe "+person.getAboutMe());
                    Log.d(TAG,"Birthday "+person.getBirthday());
                    Log.d(TAG,"Image "+person.getImage());
                }
            });

            //mStatusTextView.setText(getString(R.string.signed_in_fmt, acct.getDisplayName()));
            //updateUI(true);
        } else {
            //updateUI(false);
        }
    }

关于android - Plus.PeopleApi.getCurrentPerson 在 Play 服务 8.4 中已弃用。如何使用 GoogleSignInApi 获取用户的名字、姓氏和性别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34412157/

相关文章:

android - 2.2中RelativeLayout中的TextView项重叠; 1.6没问题

android - 如何在 Android 中的图片上写文字并保存?

java - Android 错误 : SDK23 v SDK19 - java. lang.NoClassDefFoundError : com. google.android.gms.R$string

android - AdvertisingIdClient.getAdvertisingIdInfo(context) 正在抛出 NoClassDefFoundError

ios - 从 ios 扩展中检索谷歌用户

android - Android 中的自定义语言环境

java - Android TallyServer通信

android - Google Play Install Referrer API 与 INSTALL_REFERRER 广播

ios - Google Sign In SDK实例化VC为零

android - Firebase 登录 : GoogleSignIn onActivityResult() returns RESULT_CANCELED with Result error 12500