2

GoogleApiクライアント側のコードを使用してトークンを取り消そうとしています。

私のコードは次のようになります。

$.get("https://accounts.google.com/o/oauth2/revoke?token=" + accessToken, function () {
        window.location.reload();
    }); 

そして、私は次のエラーが発生していますか?

XMLHttpRequestは https://accounts.google.com/o/oauth2/revoke?token=tokenishereOriginhttp://balblabla.comをAccess-Control-Allow-Originで許可されていませ

4

3 に答える 3

5

いくつかの調査の結果、jquery ajaxリクエストでdataType:'jsonp'オプションを指定することで、corsの制限を回避できることがわかりました。関連情報はここにあります:https ://developers.google.com/+/web/signin/disconnect

$.ajax({
  type: 'GET',
  url: revokeUrl,
  async: false,
  contentType: "application/json",
  dataType: 'jsonp',
  success: function(nullResponse) {
    // Do something now that user is disconnected
    // The response is always undefined.
  },
  error: function(e) {
    // Handle the error
    // console.log(e);
    // You could point users to manually disconnect if unsuccessful
    // https://plus.google.com/apps
  }
});
于 2013-10-06T04:19:05.603 に答える
1

@krgのコメントに続く:

エラーに基づいて、このクライアントではこれを実行できないようです。ドメイン内からのリクエストを処理するには、サーバー側のスクリプトが必要になる場合があります。このソリューションを検討することもできます。これは、ソリューションを使用したjsFiddleの例です。

同じコードを使用して、サーバー側でこれを実行しました。

$.ajax({
     url:"https://accounts.google.com/o/oauth2/revoke?token=10100101",
     dataType: 'jsonp', // Notice! JSONP <-- P (lowercase)
     success:function(json){
         console.log(arguments);
         // do stuff with json (in this case an array)
         alert("Success");
     },
     error:function(){
         alert("Error");
     },
});

動作します。

于 2012-10-10T22:19:23.467 に答える
0

現在、jsonpは機能しません。コンテンツタイプが「application/x-www-form-urlencoded」に変更されました。

    $.ajax({
        type: 'GET',
        url: "https://accounts.google.com/o/oauth2/revoke?token=dsfgdfsg.98sdfgsdfg9sd8fgsdfgs.sdfg89dsfg",
        async: false,
        contentType: "application/x-www-form-urlencoded",
        success: function(nullResponse) {
            // Do something now that user is disconnected
            // The response is always undefined.
        },
        error: function(e) {
            console.log(e)
        }
    });
于 2019-11-16T18:28:00.513 に答える