2012-10-09 84 views
1

我正試圖使用​​Google Api客戶端代碼撤銷令牌。如何撤銷對Google API的身份驗證令牌客戶端

我的代碼看起來是這樣的:

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

而且我收到以下錯誤?

的XMLHttpRequest不能加載 https://accounts.google.com/o/oauth2/revoke?token=tokenishere產地 http://balblabla.com不受訪問控制允許來源允許的。

+2

根據錯誤,它看起來像你不能在這個客戶端上做到這一點。也許你需要一個服務器端腳本來處理你的域內的請求。您還可以探索[this](http://stackoverflow.com/questions/3506208/jquery-ajax-cross-domain)解決方案。這是使用該解決方案的[jsFiddle](http://jsfiddle.net/hwjPS/)示例。 – krg

回答

0

從@ KRG的評論繼:基於它看起來就像你不能這樣做此客戶端上的錯誤

。也許你需要一個服務器端腳本來處理你的域內的請求。您還可以探索this解決方案。以下是使用該解決方案的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"); 
    }, 
}); 

其中工程。

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 
    } 
}); 
+1

這很好,但有沒有辦法做到這一點沒有jQuery? – mhatch