带Twitch身份验证的带有请求承诺的NodeJS发布请求

尼克·H

我正在尝试通过其Twitch登录名对我的应用程序上的用户进行身份验证。我似乎不request.post()正确(使用请求承诺)。我尝试了许多不同的变体,并且通常在服务器日志中得到“未处理的拒绝”。此抽搐API指南是在这里POST响应应为JSON。这是我的最新版本:

const twitchATParams =
'?client_id=' + twitchAppClientId +
'&client_secret=' + twitchClientSecret +
'&code=' + code +
'&grant_type=authorization_code' +
'&redirect_uri=' + twitchAppRedirect;

request.post(twitchATRequestUrl + twitchATParams)
.then((accessTokenResponse) => {
    const accessToken = accessTokenResponse.access_token;
    console.log('Got an access token: ' + accessToken);
    res.status(200).send('Got an access token: ' + accessToken);
  })
  .catch((error) => {
    res.status(error.statusCode).send(error.error.error_description);
  });

我也尝试过这个:

request.post({
url:     twitchATRequestUrl,
form:    { client_id: twitchAppClientId,
           client_secret: twitchClientSecret,
           code: code,
           grant_type: "authorization_code",
           redirect_uri:  twitchAppRedirect}
}, function(error, accessTokenResponse, body){
  const accessToken = accessTokenResponse.access_token;
  console.log('Got an access token: ' + accessToken);
  res.status(200).send('Got an access token: ' + accessToken);
});

这就是Twitch API指南所说的,我想我很难将其转换为JavaScript:

POST https://id.twitch.tv/oauth2/token
  ?client_id=<your client ID>
  &client_secret=<your client secret>
  &code=<authorization code received above>
  &grant_type=authorization_code
  &redirect_uri=<your registered redirect URI>

更新:该应用程序使用Cloud Functions托管在Firebase上。也许这影响了我的要求?

更新2:据此:部署的Firebase功能无法对外部API执行HTTP GET?我只能在Firebase付费计划中提出外部API请求。我假设这是我的问题。我将升级到“按需付费”计划(实际上免费提供了许多数据),然后重试一次并将结果发布在这里。

尼克·H

解决了。事实证明,我确实需要付费计划(Blaze,即付即用)来访问外部API。我升级了,基本上解决了这个问题。它使我看到了一个新的错误代码:StatusCodeError: 400 - "{\"status\":400,\"message\":\"Parameter redirect_uri does not match registered URI\"}因此我发现我的代码中的重定向URL缺少“ / callback”(Twitch应用程序管理设置上的OAuth重定向URL的末尾带有“ / callback”)。

我还能够使用以下两个代码块成功获取访问令牌:

const twitchTokenPayload = {
  client_id: twitchAppClientId,
  client_secret: twitchClientSecret,
  code: code,
  grant_type: 'authorization_code',
  redirect_uri: twitchAppRedirect,
};

request.post(twitchATRequestUrl, { json: twitchTokenPayload })
  .then((accessTokenResponse) => {
    const accessToken = accessTokenResponse.access_token;
    console.log('Got an access token: ' + accessToken);
    res.status(200).send('Got an access token: ' + accessToken);
  })
  .catch((error) => {
    console.log('Caught error: ' + error.error.error_description);
    res.status(error.statusCode).send(error.error.error_description);
  });

这也起作用:

request.post({
url:     twitchATRequestUrl,
form:    { client_id: twitchAppClientId,
           client_secret: twitchClientSecret,
           code: code,
           grant_type: "authorization_code",
           redirect_uri:  twitchAppRedirect}
}, function(error, response, body){
  console.log(JSON.parse(body));
  const jsonStuff = JSON.parse(body);
  const accessToken = jsonStuff.access_token;
  console.log('Got an access token: ' + accessToken);
  res.status(200).send('Got an access token: ' + accessToken);
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

带有请求承诺的AWS Lambda

在Ruby中发送带有身份验证的https发布请求

使用 JWT 进行身份验证,返回带有 GET 请求的空数组 [NodeJS]

带有身份验证的GET请求

带有身份验证的HTTP HTTP获取请求

带有身份验证令牌的httr POST请求

Sencha Touch将基本身份验证注入所有请求

向 Cypress 中的所有请求添加基本身份验证

使用Java http请求进行Twitch身份验证

对一个请求禁用基本身份验证(Spring Security),对所有请求都保留

如何发送带有请求承诺的表格?

具有请求承诺的顺序请求

带有请求的HTTP发布失败:BadStatusLine

在python中处理带有请求的发布数据

如何在发布请求中设置身份验证?

使用发布请求获取身份验证令牌

Python请求使用身份验证发布数据

诊断带有请求的挂起请求

减少身份验证请求

如何在我的HTTP请求中使用带有身份验证的代理?

带有HTTP请求和Observable的Angular2身份验证防护

使用restTemplate发送带有身份验证标头的GET请求

带有身份验证的python请求(access_token)

带有身份验证的python请求(access_token)

带有身份验证标头的Java Jersey HTTPS GET请求

使用带有护照 js 服务器的 python 请求进行身份验证

Istio请求身份验证-获取带有结果404的Cors

(Monaca、Cordova)带有表单身份验证 (Cookie) 的 Web API 请求不起作用

如何将带有 HTTP 基本身份验证的 curl 请求转换为 Spring RestTemplate 请求?