当前位置: 首页 > 知识库问答 >
问题:

将Get请求链接到Post请求,然后使用Express和Google oauth发送到客户端

岳俊晖
2023-03-14

我正在处理一个 Post 请求,在此请求中检索用户令牌 ID,我使用 OAuth2Client 库进一步验证令牌。验证后,我想发出 Get 请求以获取用户信息。我不确定我链接请求的方式。

代码就像:

var userid;
app.post( '/oauth/google/redirect', (req, res) => {
  const token = req.body.idtoken;
  verify().catch(console.error);
  req.get(`https://oauth2.googleapis.com/tokeninfo?id_token=${token}`, (req, res) => {
    var body = "";

      res.on('data', function(chunk) {
        body += chunk;
      });

      res.on('end', function() {
        res.send(body)
      });
  })

  });
const {OAuth2Client} = require('google-auth-library');

const client = new OAuth2Client(google.clientID);
async function verify() {
  const ticket = await client.verifyIdToken({
      idToken: token,
      audience: google.clientID,  // Specify the CLIENT_ID of the app that accesses the backend
      // Or, if multiple clients access the backend:
      //[CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3]
  });
  const payload = ticket.getPayload();
  userid = payload['sub'];
  // If request specified a G Suite domain:
  //const domain = payload['hd'];
}

在客户端,浏览器表示post请求失败,因为它花费了太多时间返回:

POSThttp://mywebapp.com/oauth/google/redirect504(网关超时)

Signed in as: <html><body><h1>504 Gateway Time-out</h1>
The server didn't respond in time.
</body></html>

共有1个答案

吕亮
2023-03-14

目前,我将request用作一个库,类似于:

app.post( '/oauth/google/redirect', (req, res) => {
  const token = req.body.idtoken;
  verify().catch(console.error);
  request(`https://oauth2.googleapis.com/tokeninfo?id_token=${token}`, function (error, response, body) {
        var data={
          body:body
        };
        res.send(data);
      });  
  });

仍然接受原生Express解决方案作为更好的答案。

 类似资料:
  • 问题内容: 我想将我的网址发送到(和)。 我当前的请求代码不起作用。 使用是 不是 一个容易回答。 问题答案: 在iOS中发送和请求非常容易。无需其他框架。 请求: 首先,将我们的(按需发送的内容)创建为,然后将其转换为。 目标 接下来,我们阅读的,因此我们可以将其传递给请求。 现在我们有了要发布的内容,我们可以创建一个,并包含我们的。 迅速 最后,我们可以发送请求,并通过创建新的请求来阅读回复:

  • zendserver 2019.7 php 7.3 apache 2.4 在测试环境中,我通过curl向我的本地服务器发送JSON post请求。当CURLOPT_POSTFIELDS少于1000个字符时,它的脚本被执行,我得到的响应很好。 但是当我增加JSON数组的长度时,同样的脚本会出现404错误。 我已经改变了所有的配置,如post_max_size等,但没有任何效果。 }'; $ URL

  • 我试图点击一个postendpoint,但它给出了错误302,当我在同一台服务器上尝试另一个get Url时,它给出了200。然后,我使用laxrirectstrategy()重定向了post请求。post请求正在重定向到get请求(只有同一个endpoint的方法名是get和post),它没有从post方法获得响应。有人能告诉我如何使用apahce httpClient 4.5将post请求重定

  • 请求方式: "|3|1|url|\r" 参数: url 设置Get请求的url链接 返回值: "|3|code|data|\r" 参数: code http请求返回的成功或者错误码, 成功:code = 200 获取数据失败:code = -1 http请求字段错误:code = 1 data http请求返回的数据 Arduino样例: softSerial.print("|3|1|http:/

  • 请求方式: "|3|2|url,content|\r" 参数: url 设置Post请求的url链接 content post请求的数据 返回值: "|3|code|data|\r" 参数: code http请求返回的成功或者错误码 成功:code = 200 获取数据失败:code = -1 http请求字段错误:code = 1 data http请求返回的数据 Arduino样例: sof

  • 问题内容: 我在HttpURLConnection和OutputStreamWriter方面挣扎。 代码实际上到达了服务器,因为我确实收到了有效的错误响应。发出了POST请求,但服务器端未收到任何数据。 正确使用此东西的任何提示均受到高度赞赏。 该代码在AsyncTask中 我正在尝试发送的JSON: 我从服务器得到的响应: 我应该得到的回应是: 服务器端PHP脚本: 以及Android Stud