个人网络应用程序的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 :-(的价值,我不知道为什么