llo我正在使用box api进行集成,他们只使用curl来获取访问令牌,如下所示
is curl https://www.box.com/api/oauth2/token \
-d 'grant_type=authorization_code&code={your_code}&client_id={your_client_id}&client_secret={your_client_secret}' \
-X POST
我想使用jquery ajax请求获取访问令牌我已经厌倦了我的代码,如下所示:
var data2= '{"grant_type":"authorization_code", "client_id":"61oliuyi1jckqos0j8zzl9h4t791umux" ,"client_secret":"Oi1XS56al61oOrrvAL3i5gdPTfe7QO9V" ,"code" :"'+code+'"}';
var data1 = JSON.parse(data2);
$.ajax({
type: 'POST',
url: "https://www.box.com/api/oauth2/token",
data: data1,
success: function(json) {
console.log(e);
alert("success"+json);
},
error: function(e) {
console.log(e)
alert("Failure"+ JSON.stringify(e));
}
});
MLHttpRequest cannot load https://www.box.com/api/oauth2/token. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.
答案 0 :(得分:2)
问题仅在于跨域请求。 Javascript Origin Policy将阻止您从另一个域(如您正在使用的localhost)向API发出Ajax请求。错误解释错误here。
当您尝试使用Box.com API时,应使用YQL来使代码正常工作。来自他们博客的This dev文章显示了如何集成YQL,并且似乎是最佳选择。
答案 1 :(得分:1)
试试这个:
$.ajax({
type: 'POST',
url: "https://www.box.com/api/oauth2/token",
data: data1,
dataType:"json",
success: function(val) {
console.log(e);
alert("success"+val);
},
error: function(e) {
console.log(e)
alert("Failure"+ JSON.stringify(e));
}
});