首次进行身份验证时,Google Auth会在名称和姓氏为空的情况下登录个人资料

时间:2016-09-06 09:48:43

标签: android authentication googlesigninaccount

使用Google Auth登录并获取个人资料详情。

但面临一个问题。如果用户第一次验证sdk将有助于添加新帐户,一旦成功,它将在onActivityResult上收回回复

GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
GoogleSignInAccount acct = result.getSignInAccount();

acct.getGivenName()acct.getFamilyName()null

但如果我使用已添加的帐户进行身份验证,则acct.getGivenName()acct.getFamilyName()都会有预期值。

我的代码如下

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .requestId()
                .requestProfile()
                .build();

GoogleApiClient googleApiClient = new GoogleApiClient.Builder(mActivity)
                .enableAutoManage(mActivity, this)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();

Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
        startActivityForResult(signInIntent, REQUEST_CODE_GOOGLE_SIGN_IN);

1 个答案:

答案 0 :(得分:0)

我在相同的问题上挣扎了几个小时而没有在互联网上找到任何回复。 在经过大量盲目猜测而没有结果之后,我偶然发现了一个似乎可以解决问题的方法:

我在开发者控制台中创建了一个“Web应用程序”OAuth 2.0客户端ID,并在初始化GoogleSignInOptions项目时传递了它,如下所示:

    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(%Your Web application ID here%)
            .requestServerAuthCode(%Your Web application ID here%)
            .requestId()
            .requestEmail()
            .requestProfile()
            .build();

从那以后,似乎工作得很好。