繁体   English   中英

如何将此卷曲请求转换为Javascript

[英]How to Convert This Curl Request to Javascript

我正在使用Streamlabs API更新用户的忠诚度积分。 执行以下操作后,点不会更新,并且会向catch块引发错误。 为此请求给出的唯一示例是curl请求。 (请参阅此处 )。 也许他们的榜样是错误的?

我正在使用Javascript和Request-Promise模块。 我已经成功地使用Twitch使用此模块为Oauth完成了POST请求。 但是,我无法将此帖子发布到Streamlabs API上,我尝试了几种方法。 这是我用于Twitch API的POST请求的相同代码,并且成功。 我无法弄清楚为什么它不适用于Streamlabs:

      const options = {
        access_token: streamlabsToken,
        channel: TWITCH_CHANNEL,
        users: 'users[' + username + ']=' + REFERRAL_POINTS
      }


      request.post(pointsAddEndpoint, { json: options })
        .then((slResponse) => {                                                       // Then 2
            if (slResponse.hasOwnProperty('message')) {
              console.log('Streamlabs response: ' + slResponse.message);
            }
            res.end();
        })
      .catch(function (error) {
        console.log('Error adding refer points: ' + error.message);
        res.end();
      });

我确定我只是在这里格式化错误的内容,有输入吗?

UPDATE

我接到要求去上班的请求。 “用户”的参数不应为“用户=用户[用户名] = 20&用户[用户名] = 30”,而应仅为“用户[用户名] = 20&用户[用户名] = 30”(已删除“用户=”) 。

我是这样在我的options对象中做到的:

      const options = {
        access_token: streamlabsToken,
        channel: TWITCH_CHANNEL
      }

      options['users[' + username + ']'] = REFERRAL_POINTS;

但是,这仍然行不通。 我知道我正确设置了“用户”参数,因为我打印了日志options['users[' + username + ']'] ,它给了我正确的REFERRAL_POINTS。

在这一点上,我正在考虑将整个内容输入为字符串。 如何将其传递到request.post的正文中?

const options = {
    method: 'POST',
    uri: 'https://streamlabs.com/api/v1.0/points/add', // whatever the endpoint
    body: {
        access_token: streamlabsToken,
        channel: TWITCH_CHANNEL,
        users: 'users[' + username + ']=' + REFERRAL_POINTS
    },
    json: true // Automatically stringifies the body to JSON
};


request(options)
.then((parsedBody) => {
    // POST succeeded...
})
.catch((err) => {
    // POST failed...
});

因此,即使API参考说明您应该这样做,该API仍不接受主体参数。 实际上,它们应该是查询参数。 我猜API参考不正确。 我将参数直接添加到url中,并将Streamlabs OAuth访问令牌放在标题中,然后它起作用了!

      var dataString = 'users[' + username + ']=' + REFERRAL_POINTS + '&channel=' + TWITCH_CHANNEL;

      const options = {
          method: 'POST',
          url: 'https://streamlabs.com/api/v1.0/points/add' + '?' + dataString,
          headers: {
            'Authorization': 'Bearer ' + streamlabsToken
          },
          json: true
      };


      request.post(options)
        .then((slResponse) => { 
          // Do something                                                      
        })
       .catch(function (error) {
          // Do something
        });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM