2017-10-13 115 views
1

我想實現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域的用戶在我的應用程序中訪問。 你能幫我嗎?

謝謝

回答

0

我已經找到了解決辦法:-) 很簡單。範圍必須是「電子郵件」。如果有這個值,Gsuite自動返回hd值來檢查它。 返回後,我試驗了與我的Gsuite域進行比較的值:-)

相關問題