2013-03-01 33 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); 
});