2017-10-13 6 views
1

私はGスイートAPIのOpenIdを実装して、自分のPHPアプリケーションのユーザーと接続し、ユーザーのG Suite管理を使用したいと考えています。GスイートPersonnal WebアプリケーションのOpenId接続

だから私は、以下の例を記述している:私は(グーグル-API-PHP-クライアントライブラリとの)負荷autoload.phpを持っているのindex.phpに

oauth2callback.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)); 

$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スイートドメインのユーザーだけに権限を与えるように設定する必要があるのはわかりません。 私を助けることができますか?

ありがとうございます。

答えて

0

を行い、私はそれは簡単です :-)解決策を発見しました。スコープは「電子メール」でなければなりません。この値がある場合、Gsuiteは自動的にhdの値を返してチェックします。 返品後、私は私のGsuiteドメインと比較する値をテストします:-)

0

私は答えの始めがあります。 しかし、apiが返ってきたら、hd(ホストされたドメイン)の値をチェックして、それをmyと比較することは可能です。私の場合はhttps://developers.google.com/identity/sign-in/web/backend-auth

、私は:-(HDの値を返していないと私はなぜない

関連する問題