5

私はここで見つけた単純な JavaScript コードに取り組んでいます: http://googleappsdeveloper.blogspot.com/2011/12/using-new-js-library-to-unlock-power-of.html

基本的にはgoogleカレンダーへの認証を取得し、そこに含まれる予定の一覧を取得します。Web アプリケーションを登録し、クライアント ID と API キーを取得しました。

私はこのエラーに直面しています:「エラー:オリジンの不一致」、ローカルホストを使用してjavascriptをローカルで実行しており、Googleアプリケーション登録のホームページもローカルホストに設定しています。

どんな助けでも大歓迎です。

コード:

<html>
  <body>
    <div id='content'>
      <h1>Events</h1>
      <ul id='events'></ul>
    </div>
    <a href='#' id='authorize-button' onclick='handleAuthClick();'>Login</a>

    <script>
    var clientId = '506979856128.apps.googleusercontent.com';
var apiKey = 'AIzaSyAGbQAZQU0YNL8hK5EU69exIg7_sOg3JoA';
var scopes = 'https://www.googleapis.com/auth/calendar';

      function handleClientLoad() {
  gapi.client.setApiKey(apiKey);
  window.setTimeout(checkAuth,1);
  checkAuth();
}

function checkAuth() {
  gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: true},
      handleAuthResult);
}

function handleAuthResult(authResult) {
  var authorizeButton = document.getElementById('authorize-button');
  if (authResult) {
    authorizeButton.style.visibility = 'hidden';
    makeApiCall();
  } else {
    authorizeButton.style.visibility = '';
    authorizeButton.onclick = handleAuthClick;
   }
}

function handleAuthClick(event) {
  gapi.auth.authorize(
      {client_id: clientId, scope: scopes, immediate: false},
      handleAuthResult);
  return false;
}

function makeApiCall() {
  gapi.client.load('calendar', 'v3', function() {
    var request = gapi.client.calendar.events.list({
      'calendarId': 'primary'
    });

    request.execute(function(resp) {
      for (var i = 0; i < resp.items.length; i++) {
        var li = document.createElement('li');
        li.appendChild(document.createTextNode(resp.items[i].summary));
        document.getElementById('events').appendChild(li);
      }
    });
 });
}
    </script>
    <script src="https://apis.google.com/js/client.js?onload=handleClientLoad">                 </script>
</body>
</html>
4

2 に答える 2

2

今日、同じエラー元の不一致が発生しました。少し検索した後、理由がわかりました。

Google Api アクセスを作成する際に、承認済みリダイレクト URI承認済みリダイレクトURI を指定する必要があります。

Authorized Redirect URIsで指定された以外の URI から Login を呼び出すと、error:Unknown Origin is thrown

参考までに:localhost を使用してローカルで JavaScript を実行していることを確認しました。これは、認証済みリダイレクト URI に localhost uri を追加していないことを意味します。

ただし、時間を無駄にしないでください。認可されたリダイレクト URI は localhost URI を受け入れません。これは、Chrome の同じオリジン ポリシーによるものです。また、disable-web-security フラグを指定して chrome を実行すると、ローカルでも動作します。

于 2013-01-28T12:59:19.067 に答える
1

オリジンの不一致の問題は、Google Developers Consoleでクライアント IDを作成するときにリダイレクト URIJavascript オリジンに注意することで解決できます。

Javascript Originsをで 終わらせないでください。/

: http://example.com/--> 正しい形式はhttp://example.com.

于 2014-03-11T04:02:37.090 に答える