oauth-2.0 通过oAuth2与jQuery/ AJAX 连接以访问Box.com

dzhpxtsq  于 2022-10-31  发布在  jQuery
关注(0)|答案(2)|浏览(239)

我正在尝试使用Box.com的API来开发一个允许创建文件夹的快速应用程序。我在连接到他们的API时遇到了麻烦,而且我对oAUTH2、API等等还很陌生。我已经尝试按照以下指南进行操作:
http://developers.box.com/oauth/
http://developers.box.com/docs/#folders-create-a-new-folder
Box.com的文档中说
响应类型:终结点是否返回授权代码。对于Web应用程序,应使用code值。
client_id:您在初始设置中取得的client_id。
redirect_uri:将在其中重定向响应的HTTPS URI或自定义URL方案。如果重定向URI已向Box注册,则为可选。
state:您选择的任意字符串,它将包含在对应用程序的响应中。Box建议您使用防伪造状态令牌来防止对用户的CSRF攻击
因此,示例GET请求可能如下所示:
获取网址://www.box.com/api/oauth2/authorize?response_type=code&client_id=MY_CLIENT_ID&state=security_token%3DKnhMJatFipTAnM0nHlZA
我有一个开发帐户与他们和这里是我的基本jquery是不工作的..

  1. $.ajax({
  2. //The URL to process the request
  3. url : 'https://www.box.com/api/oauth2/authorize',
  4. type : 'GET',
  5. data : {
  6. response_type : 'code',
  7. client_id : 'm025a55gtov17txux1v2vbzjjhph2b6n'
  8. },
  9. success: function( resp ) {
  10. console.log( resp.people );
  11. },
  12. error: function( req, status, err ) {
  13. console.log( 'something went wrong', status, err );}
  14. });

谁能告诉我怎么做?我被难住了。

bhmjp9jg

bhmjp9jg1#

我确实找到了连接到他们的API并获得令牌的方法,但现在,当我尝试向他们的服务器发送POST请求以创建一个文件夹(我的应用程序的主要目标)供感兴趣的人使用时,我收到了CORS错误。下面是我如何权衡代码以获得令牌的方法

  1. authorizeUser = function(){
  2. var results = $.ajax({
  3. // The URL to process the request
  4. url : 'https://www.box.com/api/oauth2/token',
  5. type : 'POST',
  6. data : {
  7. grant_type : 'authorization_code',
  8. code : data.boxAuthorizationCode,
  9. client_id : data.clientId,
  10. client_secret : data.clientSecret
  11. },
  12. beforeSend: function (xhr) {
  13. xhr.setRequestHeader("Authorization", "Bearer $token")
  14. },
  15. dataType: "json",
  16. success: function(response) {
  17. //console.log(response);
  18. console.log(response.access_token);
  19. data.access_token = response.access_token;
  20. tokenGranted();
  21. }
  22. });
  23. return results.responseText;
  24. },
展开查看全部
vlju58qv

vlju58qv2#

您可以使用Axios代替 AJAX

  1. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  2. <script src="https://cdnjs.cloudflare.com/ajax/libs/qs/6.9.4/qs.js"></script>

在需要这个脚本之后,你可以写你自己的javascript函数,它就会工作。
clientId:传递动态客户端ID。secret:传递动态机密。

  1. async function runAuthQuery(params) {
  2. const config = {
  3. url: '{WebURL}',
  4. method: 'post',
  5. data: Qs.stringify({
  6. grant_type: 'client_credentials',
  7. client_id: clientId,
  8. client_secret: secret,
  9. })
  10. };
  11. const bearerToken = await axios(config);
  12. const getPlayableUrl = await axios.get(`{WebURL}`,
  13. {
  14. "headers": {
  15. "content-type": "application/x-www-form-urlencoded",
  16. "authorization": `Bearer ${bearerToken.data.access_token}`
  17. }
  18. });
  19. }

对我来说很好。

展开查看全部

相关问题