Meteor HTTP.post到Plaid返回401

时间:2014-11-05 05:38:36

标签: meteor plaid

我一直在尝试使用数据执行HTTP.post,但我一直收到401响应,说其中一个变量(client_id)丢失了。

代码:

fetchPlaidAccounts: function (options) {
    this.unblock();
    response = HTTP.post(config.plaid.base_url + 'connect', {
        data: {
            client_id: config.plaid.client_id,
            secret: config.plaid.secret,
            username: options.username,
            password: options.password,
            type: options.institution,
            email: options.email,
            options: '{"login_only":true,"list":true}'
        },
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            'Access-Control-Allow-Origin': '*'
        }
    });
    return response;
}

我之前做了一个HTTP.get,使用params而不是数据工作得很好。

我也是console.log所有变量,它们都有值。

那么,我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

我回答了自己的问题。

快来找出,我不需要在服务器端添加headers。只有在客户端运行呼叫时才需要这些标题。

所以,最终的调用如下:

fetchPlaidAccounts: function (options) {
    this.unblock();
    var d = {
        client_id: config.plaid.client_id,
        secret   : config.plaid.secret,
        username : options.username,
        password : options.password,
        email    : options.email,
        type     : options.institution,
        options: '{"login_only":true,"list":true}'
    };
    var response = HTTP.post(config.plaid.base_url + 'connect', { data: d });
    return response;
}

答案 1 :(得分:0)

尝试使用params代替数据:

HTTP.post(config.plaid.base_url + 'connect', {
    params: {
        ...
    }

data在POST期间将值作为JSON编码为正文。 Params将它们作为多个/部分表单数据发送,这是我怀疑API使用的。