2016-06-29 11 views
0

私はこの質問を正しく聞いているかわかりません。私はGoogle Sign-Inを使用して、Webアプリケーション上の特定のアクションまたはアプリケーションの特定のページに対してユーザーを認証したいと考えています。Google Sign-In、セッション状態の保存方法

私はGoogle Sign-Inの指示に従っています。私はid_tokenを取得し、それを私のサーバーに渡してからtokeninfoエンドポイントを使用してid_tokenを確認し、ユーザー情報のid_tokenを交換します。

id_tokenを取得してサーバーに渡してから、tokeninfoエンドポイントに渡して、PHPの動作を実行するたびに確認するか、認証された状態を格納してこれらの呼び出しをすべて防止する必要がありますかユーザーが認証されるとtokeninfoエンドポイントに移動しますか?

私はその最後の部分についてどうやって行くのか分かりません。今私はこのようなjavascriptで私のサーバーにトークンを渡しています。

function sendToken(googleUser) { 
     var id_token = googleUser.getAuthResponse().id_token; 
     console.log(id_token); 
     var xhr = new XMLHttpRequest(); 
     xhr.open('POST', 'https://app.mydomain.com/test.php'); 
     xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
     xhr.onload = function() { 
      console.log(xhr.responseText); 
     }; 
     xhr.send('idtoken=' + id_token); 
    } 

次に、私はPHPでこれをやっています。

$url = 'https://www.googleapis.com/oauth2/v3/tokeninfo'; 
$myvars = 'id_token=' . $_POST["idtoken"]; 

$ch = curl_init($url ); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $myvars); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$response = curl_exec($ch ); 

私は、ユーザーを検証し、ユーザーはGoogleによって検証された場合には、データベースに挿入するなどの措置を継続する$応答を確認してください。私は、ユーザーがデータベースにデータを入力する必要があるたびにこの検証を行い、それは私にとっては遅いようです。だから、私は物事をより良くするためにいくつかのステップを欠いていると確信しています。

ありがとうございます!

答えて

0

私はそれがPHPではないことを知っていますが、this answerもお役に立ちます。

Google Sign-inの問題ではなく、PHP(および使用しているPHPフレームワーク)の問題です。 $responseでは、あなたはあなたのメールアドレスを取得すると思います。これで電子メールであるセッションCookieを設定する必要があります。これを済ませたら、Google Sign-Inで作業が完了します。今はあなたのユーザ、あなたのPHPコード、そして重要なユーザーのクッキーです。

関連する問題