是否可以允许客户端仅使用Google Apps 域电子邮件地址连接到 API? 用户通常有自己的 Gmail 会话处于活动状态,我们需要确保他们只能使用我们的 Google Apps 域电子邮件连接到 API。
目前,唯一的解决方案是,如果他们的电子邮件地址不包含我们的域,则当他们从身份验证步骤返回时,我们会断开它们的连接,并显示一条错误消息,告诉他们需要使用他们的 [domain] .com电子邮件地址再次执行这些步骤,这远不是理想的。 例如,是否可以在作用域或 api 控制台中的某个位置指定域?
[Google API PHP Client]
我找到了一个黑客解决方案,简要描述了那些可能需要类似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的人正在关注SO这样的问题,回声回声......