2013-03-01 62 views
1

我试图在nodejs模块中实现https://developers.podio.com/doc/items/add-new-item-22362 Podio API addItem调用。下面是代码:Podio API addItem调用

var _makeRequest = function(type, url, params, cb) { 
    var headers = {}; 
    if(_isAuthenticated) { 
    headers.Authorization = 'OAuth2 ' + _access_token ; 
    } 
    console.log(url,params); 
    _request({method: type, url: url, json: true, form: params, headers: headers},function (error, response, body) { 
    if(!error && response.statusCode == 200) { 
     cb.call(this,body); 
    } else { 
     console.log('Error occured while launching a request to Podio: ' + error + '; body: ' + JSON.stringify (body)); 
    } 
    }); 
} 

exports.addItem = function(app_id, field_values, cb) { 
    _makeRequest('POST', _baseUrl + "/item/app/" + app_id + '/',{fields: {'title': 'fgdsfgdsf'}},function(response) { 
    cb.call(this,response); 
    }); 

它返回以下错误:

{"error_propagate":false,"error_parameters":{},"error_detail":null,"error_description":"No matching operation could be found. No body was given.","error":"not_found"} 

只有“title”属性,需要在应用程序 - 我查了一下,在波迪奥GUI。我也尝试从我发布的URL中删除尾部斜杠,然后发生类似的错误,但在错误描述中找到了URL未找到的消息。

我要设置一个代理来捕获原始请求,但也许有人只是看到代码中的错误?

任何帮助表示赞赏。

回答

1

没关系,我找到了解决方案。问题在于,addItem调用是我的第一个“真正的”-API方法实现,在主体中带有JSON参数。前者的调用是身份验证,getApp是GET并且没有任何参数。

问题是跑道支持POST键值对进行身份验证,但不支持所有的调用,并且我试图对所有调用使用单个_makeRequest()方法,包括auth和real- API的。

看起来我需要实现一个用于身份验证,一个用于所有API调用。

无论如何,如果有人需要概念的工作证明为节点的addItem通话,这(假设你有事先的身份验证令牌)

_request({method: 'POST', url: "https://api.podio.com/item/app/" + app_id + '/', headers: headers, body: JSON.stringify({fields: {'title': 'gdfgdsfgds'}})},function(error, response, body) { 
    console.log(body); 
}); 
相关问题