PHP Google登录api仅限于一个域



我已经设法让登录按钮使用oAuth 2.0在本地主机上工作。我一直在寻找其他解决方案,比如试图编辑OAUTH2.php文件以包含hd参数。以下是它的外观:

  public function createAuthUrl($scope) {
     $params = array(
    'response_type' => 'code',
    'redirect_uri' => $this->client->getClassConfig($this, 'redirect_uri'),
    'client_id' => $this->client->getClassConfig($this, 'client_id'),
    'scope' => $scope,
    'access_type' => $this->client->getClassConfig($this, 'access_type'),
    'approval_prompt=' . urlencode($this->approvalPrompt),
    'hd=domain.com'
);
// Prefer prompt to approval prompt.
if ($this->client->getClassConfig($this, 'prompt')) {
  $params = $this->maybeAddParam($params, 'prompt');
} else {
  $params = $this->maybeAddParam($params, 'approval_prompt');
}
$params = $this->maybeAddParam($params, 'login_hint');
$params = $this->maybeAddParam($params, 'hd');
$params = $this->maybeAddParam($params, 'openid.realm');
$params = $this->maybeAddParam($params, 'include_granted_scopes');

// If the list of scopes contains plus.login, add request_visible_actions
// to auth URL.
$rva = $this->client->getClassConfig($this, 'request_visible_actions');
if (strpos($scope, 'plus.login') && strlen($rva) > 0) {
    $params['request_visible_actions'] = $rva;
}
if (isset($this->state)) {
  $params['state'] = $this->state;
}
return self::OAUTH2_AUTH_URL . "?" . http_build_query($params, '', '&');
}

正如你所看到的,我尝试在$params数组中添加hd参数,但它仍然允许我使用我的普通gmail帐户登录。我怎样才能做到这一点?

假设您的域是Google Apps域,您可以通过执行以下操作来限制允许的用户域。

1.将GAE应用程序推荐限制到特定域

开发者控制台-->应用程序引擎-->设置-->应用程序设置-->编辑-->在谷歌身份验证部分,选择"谷歌应用程序域",输入域名。

2.将GAE应用程序连接到您的谷歌应用程序域

在谷歌应用程序域的谷歌管理控制台上,将您的应用程序添加为新的谷歌应用程序引擎服务。

此外,谷歌似乎会直接向您的服务器提供ID令牌。但是,如果不是这样,请根据谷歌的OpenID Connect文档验证ID令牌,其中包括验证hd声明是否正确。

希望这能有所帮助!

相关内容

  • 没有找到相关文章

最新更新