【问题标题】:Google API - allow connections only with Google Apps DomainGoogle API - 仅允许与 Google Apps 域的连接
【发布时间】:2013-10-29 08:58:45
【问题描述】:

是否可以允许客户端仅使用谷歌应用域电子邮件地址连接到 API?用户通常有自己的 gmail 会话处于活动状态,我们需要确保他们只能使用我们的 Google Apps 域电子邮件连接到 api。

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

[Google API PHP 客户端]

【问题讨论】:

标签: php google-api


【解决方案1】:

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

如果您在电子邮件地址中添加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中authenticate方法的参数:

  $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")

如果有我在文档或搜索中没有找到的内置内容,请告诉我。顺便说一句,我认为 Google API 人员正在密切关注 SO 等问题,例如 echo echo...

【讨论】:

  • Google API 的人都忙于打乒乓球。 ;) 说真的,他们在哪里?! Google 的 API “文档”是……嗯……我认为空中报价就足够了。
猜你喜欢
  • 2013-03-15
  • 2015-10-09
  • 2012-11-06
  • 2021-03-23
  • 1970-01-01
  • 1970-01-01
  • 2015-05-05
  • 2020-05-05
  • 2014-05-20
相关资源
最近更新 更多