Ich versuche, ein Token mithilfe des clientseitigen Codes von Google Api zu widerrufen.

Mein Code sieht ungefähr so aus:

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

Und ich bekomme folgenden Fehler?

XMLHttpRequest kann nicht geladen werden https://accounts.google.com/o/oauth2/revoke?token=tokenishere Herkunft http://balblabla.com ist von Access-Control-Allow-Origin nicht zulässig.

2
shenku 10 Okt. 2012 im 02:29

3 Antworten

Beste Antwort

Nach dem Kommentar von @ krg:

Aufgrund des Fehlers können Sie dies auf diesem Client nicht tun. Möglicherweise benötigen Sie ein serverseitiges Skript, um die Anforderung innerhalb Ihrer Domain zu bearbeiten. Sie können auch diese Lösung untersuchen. Hier ist ein jsFiddle Beispiel für die Verwendung der Lösung.

Ich habe dies auf der Serverseite mit demselben Code getan:

$.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");
     },
});

Was funktioniert.

1
Bhargav Rao 29 Juli 2017 im 14:23

Nach einigen Recherchen habe ich herausgefunden, dass Sie die cors-Einschränkung umgehen können, indem Sie in Ihrer jquery ajax-Anfrage die Option dataType: 'jsonp' angeben. Die relevanten Informationen finden Sie hier: https://developers.google.com/+/web/signin / trennen

$.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
  }
});
5
Evan Siroky 1 Okt. 2015 im 02:57

Jetzt funktioniert jsonp nicht mehr. Sie haben den Inhaltstyp in "application / x-www-form-urlencoded" geändert.

    $.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)
        }
    });
0
khan 16 Nov. 2019 im 18:28