1

与我有关的问题有很多,但是在花了几个小时研究不同的答案并自己尝试之后,我仍然无法解决我的问题!

我正在使用 OAuth 2.0 协议来访问 Box 的 API。到目前为止,我已经能够检索到授权码,现在我正试图用它来换取访问码。到目前为止一切似乎都正常:在我向 Box 发出 POST 请求后,我被重定向到https://www.box.com/api/oauth2/token并收到一个我不知道如何处理的 JSON 响应和。

我已经尝试过使用 JQuery 的 $.get 和 $.parseJSON 函数,但我完全不知道我应该如何构造代码,或者我是否首先以正确的方式接近这个。

这是我用来发布的功能:

function post_to_url(path, params) {

    var form = document.createElement("form");
    form.setAttribute("method", "post");
    form.setAttribute("action", 'https://www.box.com/api/oauth2/token');

    for(var key in params) {
        if(params.hasOwnProperty(key)) {
            var hiddenField = document.createElement("input");
            hiddenField.setAttribute("type", "text");
            hiddenField.setAttribute("name", key);
            hiddenField.setAttribute("value", params[key]);

            form.appendChild(hiddenField);
         }
    }

    document.body.appendChild(form);
    form.submit();
}

当我调用它时,我被重定向到https://www.box.com/api/oauth2/token并且我的浏览器显示以下字符串:

{"access_token":"H97GnkuWCRUxxx"expires_in":3600,"refresh_token":"cIJyyyyym1aSuNFmmC2PgTtiP2xfXm0dCmzzzz,"token_type":"bearer"}

我真的很感激我能得到的任何帮助,非常感谢!

4

1 回答 1

3

您不需要 jquery 来执行此操作,实际上它非常简单。

var json = JSON.parse(the returned json var);

然后你可以像这样处理它:

json.access_token; //this would be the access token

这是我用于 POST/GET 请求的代码:

    var xhr=new XMLHttpRequest();
    xhr.open('POST','url', true);//the true bool makes it async
    xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); //this url encodes the request (this is for if you have special values such as spaces and symbols)
    xhr.send(information to send goes here);
    xhr.onreadystatechange=function()
    {
        if(xhr.readyState===4)
        {
            if(xhr.status===200)
            {
                var json = xhr.responseText;
            }
        }
    };
于 2013-04-29T19:00:26.857 回答