18

OAUTH2 がどのように機能するかを正確に示すTim Rosenbergによる良い写真:

ここに画像の説明を入力

私はこの2つの ファイルを調べてテストするのが面倒な ので、最も簡単な方法を探しました

1.トークンを取得

2.そのトークンでアクセス

gwt-oauth2の助けを借りて

それを index.php head に入れてください: <script type="text/javascript" src="gwt-oauth2.js"></script>

そしてこれが体に

<script type="text/javascript">
(function() {
var GOOGLE_AUTH_URL = "https://accounts.google.com/o/oauth2/auth";
var GOOGLE_CLIENT_ID = "CLIENT_ID";
//var PLUS_ME_SCOPE = "https://www.googleapis.com/auth/plus.me";
//var FusionTable_SCOPE = "https://www.googleapis.com/auth/fusiontables";       
var button = document.createElement("button");
button.innerText = "Authenticate with Google";
button.onclick = function() {

var req = {
    'authUrl' : GOOGLE_AUTH_URL,
    'clientId' : GOOGLE_CLIENT_ID,
    'scopes': ['https://www.googleapis.com/auth/plus.me',
               'https://www.googleapis.com/auth/fusiontables'
              ],
};

oauth2.login(req, function(token) {
    alert('Got an OAuth token:\n'+ token +'\n'+ 'Token expires in '+ oauth2.expiresIn(req) +' ms\n');
  }, function(error) {
    alert("Error:\n" + error);
  });
};

var dv = document.getElementById('admin-content');
dv.appendChild(button);
var clearTokens = document.createElement('button');
clearTokens.innerText = 'Clear all tokens'
clearTokens.onclick = oauth2.clearAllTokens;
dv.appendChild(clearTokens);
})();
</script>

わかった、

これで、新しいウィンドウで oauthWindow.html への接続とリダイレクトをエラーなしで確認できます。GET パラメータが表示されるようになりaccess_token token_type expires_inました。ここでaccess_tokenを確認してください

ご覧のとおり、 access_token はうまく機能していますが、

あなたがまだ得ていないのは、それからの最初のアラートです:

oauth2.login(req, function(token) {
  alert('Got an OAuth token:\n' + token + '\n'
  + 'Token expires in ' + oauth2.expiresIn(req) + ' ms\n');
}, function(error) {
  alert("Error:\n" + error);
});

2 番目のアラートは正常に機能し、認証しようとすると. 繰り返しますが、oauthWindow.html がまだ開いている場合は、エラー アラートが表示されます (動作しているためです!)。では、その小さなコードを oauthWindow.html に追加しましょう。

<!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript">
      if (window.opener && window.opener.oauth2 && window.opener.oauth2.__doLogin) {
        window.opener.oauth2.__doLogin(location.hash);
      } else {
        document.body.innerText = "Your browser seems to be stopping this window from communicating with the main window.";
      }
    </script>
  </head>
  <body></body>
</html>

完全!

プライベート テーブルを操作する場合は、url に access_token を追加するだけです。

自分で答える理由を教えてくれてありがとう!

4

1 に答える 1

1

これをoauthWindow.htmlファイルに入れます

<!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript">
      if (window.opener && window.opener.oauth2 && window.opener.oauth2.__doLogin) {
        window.opener.oauth2.__doLogin(location.hash);
      } else {
        document.body.innerText = "Your browser seems to be stopping this window from communicating with the main window.";
      }
    </script>
  </head>
  <body></body>
</html>
于 2012-06-20T22:38:24.907 に答える