0

我在 node.js 中编写了一个程序来获取访问令牌以调用框 api,不幸的是,根据文档,我收到一个错误“invalid_client”,即“客户端 ID 或密码错误”。我很确定客户端 ID 和密码都是正确的,因为它在从 UI 进行 ajax 调用时对我来说很好。

这是我正在使用的一段代码

{{{
if(queryData && queryData.code) {
    var code = queryData.code;
    var data = {
        "grant_type" : 'authorization_code',
        "client_id" : 'alpha-numeric-id',
        "client_secret" : 'alpha-numeric-secret',
        "code": 'actual-code-given-in-redirect-uri'
    };

    var options = {
        'url': 'https://www.box.com/api/oauth2/token',
        'proxy': 'http://corporate-proxy-url:port',
        'headers': {
            'accept': 'application/json',
            'accept-language': 'en'
        },
        'json': data,
        'timeout': 5000
    };      

    request.post( options, function ( err, response, body ) {
        if ( err ) {
            console.log("====error====");
        } else {
            console.log("====success=====");
            console.log(response.statusCode);
            console.log(body);
        }
    } );
}
}}}

如果有人能弄清楚我的代码有什么问题,那将会很有帮助。

提前致谢。

4

1 回答 1

1

看起来你打错了网址:没有任何 API 调用的 www.box.com/api AFAIK

根据文档,它是 app.box.com/api/oauth2/authorize?为您的第一次 OAuth2 调用执行Authorize和 api.box.com/oauth2/token 进行令牌调用,以及所有后续 API 调用。api.box.com/2.0/

所以第1步:授权:

GET https://app.box.com/api/oauth2/authorize?response_type=code&client_id=MY_CLIENT_ID&state=security_token%3DKnhMJatFipTAnM0nHlZA

步骤 1.5 用户登录 Box,您会被 Box 回叫...

第 2 步:获取您的令牌

curl https://app.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

第 3 步:调用 API:

curl https://api.box.com/2.0/folders/FOLDER_ID/items?limit=2&offset=0 \
-H "Authorization: Bearer ACCESS_TOKEN"
于 2015-01-06T22:02:38.633 回答