个人网络应用程序的G Suite OpenId连接
问题描述:
我想实现G Suite api的OpenId来连接我自己的php应用程序的用户并使用用户的G Suite管理。个人网络应用程序的G Suite OpenId连接
所以我写下面的例子:在index.php中
我有负载autoload.php(与谷歌-API-PHP-客户端库)
$client = new \Google_Client();
$client->setClientId(CLIENT_ID);
$client->setClientSecret(SECRET);
$client->setAuthConfig(ROOT_PATH.CLIENT_SECRET_JSON_FILE);
$client->setAccessType("offline");
$client->setIncludeGrantedScopes(true);
$client->setHostedDomain('mydomain.com');
$client->addScope(\Google_Service_Oauth2::USERINFO_PROFILE);
$redirect = $_SERVER['HTTP_HOST'];
$redirect = 'myapplication.mydomain.com';
$client->setRedirectUri('https://' . $redirect . '/oauth2callback.php');
$auth_url = $client->createAuthUrl();
header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
oauth2callback.php
$client = new \Google_Client();
$client->setClientId(CLIENT_ID);
$client->setClientSecret(SECRET);
$client->setAuthConfig(ROOT_PATH.CLIENT_SECRET_JSON_FILE);
$client->setRedirectUri('https://myapplication.mydomain.com/oauth2callback.php');
$client->setAccessType("offline");
$client->setIncludeGrantedScopes(true);
$client->setHostedDomain('mydomain.com');
if (!isset($_GET['code'])) {
$auth_url = $client->createAuthUrl();
header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
}
else {
$client->fetchAccessTokenWithAuthCode($_GET['code']);
$_SESSION['access_token'] = $client->getAccessToken();
$oauth = new \Google_Service_Oauth2($client);
var_dump($oauth->userinfo->get());
}
exit();
这个例子一切正常,但是,我可以将我的应用程序连接到我的G Suite域的另一个帐户:-(
我不明白我必须将其配置为仅授权我的G Suite域的用户在我的应用程序中访问。 你能帮我吗?
谢谢
答
我已经找到了解决办法:-) 很简单。范围必须是“电子邮件”。如果有这个值,Gsuite自动返回hd值来检查它。 返回后,我试验了与我的Gsuite域进行比较的值:-)
答
我有一个答案的开始,这是不可能的。 但是,随着api的返回,可以检查值hd(托管域)以将其与我的比较。 https://developers.google.com/identity/sign-in/web/backend-auth
就我而言,我还没有回到HD :-(的价值,我不知道为什么