谷歌Apps的SSO - 名字和姓氏使用OAuth 2没有使用Google+(Google App

2019-10-20 17:26发布

我试图使用OAuth 2,我使用的是实行谷歌Apps的SSO 谷歌PHP客户端库用于这一目的。 我将范围设置为“电子邮件”“个人资料”的认证过程:

$this->client->setScopes('email', 'profile');

我能够获得与verifyIdToken的电子邮件地址,名字和使用谷歌加姓氏。

if ($this->client->getAccessToken()) {
    $tokenData = $this->client->verifyIdToken()->getAttributes();
    // Email: $tokenData['payload']['email']

    $plus = new \Google_Service_Plus($this->client);
    $me = $plus->people->get('me');
    // First name: $me['modelData']['name']['givenName']
    // Last name: $me['modelData']['name']['familyName']
}

我现在面临的问题是,许多用户使用谷歌应用程序,而不必在Google+个人资料。 我的问题是:我如何获得验证用户的名字和姓氏使用谷歌Plus服务?

注:我试过张贴到https://www.googleapis.com/oauth2/v1/userinfo用正确的访问令牌,但这很快就被弃用,此外,它也返回用户空名字和姓氏谁不拥有Google+个人资料。

Answer 1:

我结束了使用OAuth的包含在库2.0服务。

require_once 'Google/Service/Oauth2.php';

$oAuth2 = new \Google_Service_Oauth2($this->client);
$oAttr = $oAuth2->userinfo->get();

第一个名字是$oAttr['givenName']和姓氏为$oAttr['familyName']

我也不得不改变范围“OpenID的邮件配置文件”:

$this->client->setScopes('openid email profile');


文章来源: Google Apps SSO - First and Last Name with OAuth 2 without using Google+