我目前正在使用Facebook JavaScript SDK和Scores API(https://developers.facebook.com/docs/score/)。我寫了一個小應用程序來保存(發佈)分數,現在我想刪除分數。發佈(保存)它們工作正常。訪問控制 - 允許來源的HTTP DELETE不允許來源
我的代碼如下所示:
var deleteHighScoreUrl = 'https://graph.facebook.com/'+facebook.user.id+'/scores?access_token='+facebook.application.id+'|'+facebook.application.secret;
jQuery.ajax(
{
type: 'DELETE',
async: false,
url: deleteHighScoreUrl,
success: function(data, textStatus, jqXHR)
{
console.log('Score deleted.');
}
});
「臉譜」變量是保存我的應用程序數據的對象。對於HTTP POST,它工作正常,但對於HTTP DELETE,我在Firebug中獲得響應「NetworkError:400 Bad Request」(使用Firefox 10)。我看到Firefox首先發送了一個HTTP OPTIONS(查看是否允許使用HTTP DELETE),這導致了這個錯誤,所以我嘗試了谷歌瀏覽器的同樣的事情。谷歌瀏覽器發送一個HTTP實時刪除,然後返回:
"XMLHttpRequest cannot load https://graph.facebook.com/USER_ID/scores?access_token=APP_ID|APP_SECRET . Origin MY_DOMAIN is not allowed by Access-Control-Allow-Origin".
我認爲這是一個經典的跨域問題,但如何解決呢?我已將我的域添加到我的Facebook應用程序(位於https://developers.facebook.com/apps),Facebook有一段名爲「刪除用戶分數」的段落。所以它必須可以刪除分數(不知何故)?
你永遠不要在客戶端代碼中使用application.secret! – tur1ng 2012-04-15 10:09:21