Javascript 通过oAuth2与jQuery/AJAX for Box.com连接
我正在尝试使用Box.com的API来开发一个允许创建文件夹的快速应用程序。我在连接到他们的API时遇到了问题,而且我对oAUTH2、API之类的东西相当陌生。我试着遵循以下指南: Box.com的文档说 响应类型:端点是否返回授权码。对于 web应用程序中,应使用代码值 客户端id:在初始设置中获得的客户端id 重定向uri:一个HTTPS uri或自定义URL方案,其中 将被重定向。如果重定向URI已向注册,则为可选 盒子已经打开了 状态:您选择的任意字符串,将 包括在对您的应用程序的响应中。Box建议您 使用防伪状态令牌防止对用户的CSRF攻击 因此,示例GET请求可能如下所示: 得到 https://www.box.com/api/oauth2/authorize?response_type=code&client_id=MY_client_id&state=security_令牌%3DKnhMJatFipTAnM0nHlZA 我和他们有一个dev帐户,下面是我的基本jquery,它不起作用Javascript 通过oAuth2与jQuery/AJAX for Box.com连接,javascript,jquery,ajax,oauth-2.0,box-api,Javascript,Jquery,Ajax,Oauth 2.0,Box Api,我正在尝试使用Box.com的API来开发一个允许创建文件夹的快速应用程序。我在连接到他们的API时遇到了问题,而且我对oAUTH2、API之类的东西相当陌生。我试着遵循以下指南: Box.com的文档说 响应类型:端点是否返回授权码。对于 web应用程序中,应使用代码值 客户端id:在初始设置中获得的客户端id 重定向uri:一个HTTPS uri或自定义URL方案,其中 将被重定向。如果重定向URI已向注册,则为可选 盒子已经打开了 状态:您选择的任意字符串,将 包括在对您的应用程序的响应中
$.ajax({
//The URL to process the request
url : 'https://www.box.com/api/oauth2/authorize',
type : 'GET',
data : {
response_type : 'code',
client_id : 'm025a55gtov17txux1v2vbzjjhph2b6n'
},
success: function( resp ) {
console.log( resp.people );
},
error: function( req, status, err ) {
console.log( 'something went wrong', status, err );}
});
有人能告诉我怎么做吗?我被难住了。我确实找到了连接到他们的API并获取令牌的方法,但现在我在尝试向他们的服务器发送POST请求以创建文件夹时遇到了CORS错误,这是我的应用程序的主要目标,供感兴趣的人使用。。下面是我如何用代码交换令牌的
authorizeUser = function(){
var results = $.ajax({
// The URL to process the request
url : 'https://www.box.com/api/oauth2/token',
type : 'POST',
data : {
grant_type : 'authorization_code',
code : data.boxAuthorizationCode,
client_id : data.clientId,
client_secret : data.clientSecret
},
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization", "Bearer $token")
},
dataType: "json",
success: function(response) {
//console.log(response);
console.log(response.access_token);
data.access_token = response.access_token;
tokenGranted();
}
});
return results.responseText;
},
您可以使用Axios而不是ajax
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/qs/6.9.4/qs.js"></script>
这对我来说很好
async function runAuthQuery(params) {
const config = {
url: '{WebURL}',
method: 'post',
data: Qs.stringify({
grant_type: 'client_credentials',
client_id: clientId,
client_secret: secret,
})
};
const bearerToken = await axios(config);
const getPlayableUrl = await axios.get(`{WebURL}`,
{
"headers": {
"content-type": "application/x-www-form-urlencoded",
"authorization": `Bearer ${bearerToken.data.access_token}`
}
});
}