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.
3 Antworten
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.
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
}
});
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)
}
});