Google API - 仅允许与Google Apps域建立连接

时间:2013-10-29 08:58:46

标签: php google-api

是否可以允许客户端仅使用Google Apps域名电子邮件地址连接到API?用户通常拥有自己的Gmail会话,我们需要确保他们只能使用我们的Google Apps域名电子邮件连接到api。

目前唯一的解决方案是,如果他们的电子邮件地址不包含我们的域名,我们会在他们从auth步骤返回时断开连接,并显示一条错误消息告诉他们需要使用他们的[域名]再次执行这些步骤.com电子邮件地址,远远不够理想。可以在范围或api控制台中的某个位置指定域吗?

[Google API PHP客户端]

1 个答案:

答案 0 :(得分:1)

我找到了一个hacky解决方案,简要描述了那些可能需要类似smth的人:

如果您使用电子邮件地址添加login_hint参数(在本例中为Google Apps帐户,使用我们自己的域名),则会绕过初始登录页面,如果有其他任何其他Google会话可以绕过它们。我没有发现文档中描述的这种行为,也没有找到在google-api-php-client中添加此参数的功能。我在Google_Client.php文件中添加了一个方法,以便能够添加login_hint参数:

public function setLoginHint($loginHint) {
    global $apiConfig;
    $apiConfig['login_hint'] = $loginHint;
    self::$auth->login_hint = $loginHint;
  }

Google_Oauth2.php中验证方法的参数:

  $request = Google_Client::$io->makeRequest(new Google_HttpRequest(self::OAUTH2_TOKEN_URI, 'POST', array(), array(
      'code' => $code,
      'grant_type' => 'authorization_code',
      'redirect_uri' => $this->redirectUri,
      'client_id' => $this->clientId,
      'client_secret' => $this->clientSecret,
      'login_hint' => $this->loginHint  
  ))); 

然后我可以在身份验证期间使用用户的Google Apps电子邮件地址调用该方法:

$client->setLoginHint("user@mydomain.com")

如果内置的内容我在文档或搜索中找不到,请告诉我。顺便说一下,我认为谷歌API的人们正在关注这些问题,回声回声......