我目前正在使用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