如何在 firebase 函数中使用 Axios 正确发送 Post 请求?

Posted

技术标签:

【中文标题】如何在 firebase 函数中使用 Axios 正确发送 Post 请求?【英文标题】:how to properly send a Post request with Axios in a firebase function? 【发布时间】:2022-01-21 06:47:36 【问题描述】:

我正在尝试使用 axios 发送一个帖子请求,我想知道是否有人有一些意见。

  let grant_type: string = 'authorization_code'

await axios
    .post(
      url,
      
        client_id: client_id,
        client_secret: client_secret,
        grant_type: grant_type,
        redirect_uri: redirect_uri,
        code: code,
      ,
      
        headers:  'Content-Type': 'application/x-www.form-urlencoded' ,
      ,
    )
    .then((response) => 
      functions.logger.log('---Response---')
      functions.logger.log(response)
      return response
    )
    .catch((error) => 
      functions.logger.log(error)
      return error
    )

我得到的错误是

error_description: 'The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed. Check the "grant_type" parameter.'

如果有人可以提供帮助,那就太好了,我很茫然,我已经尝试使用邮递员进行 api 调用,一切正常,但是当我尝试使用 firebase 函数时,它不起作用。

谢谢!

【问题讨论】:

请显示每个变量的确切值,或至少显示grant_type 的值(因为这是错误消息所说的错误)。 让 grant_type: string = 'authorization_code' 【参考方案1】:

问题解决了!!!!!!

我不得不使用 qs.stringify 作为 body 参数,我在尝试自己解决这个问题时在一些帖子上看到了这个,但它给了我 stringify 不是一个函数的错误.. 来解决这个问题我从 import 语句更改为 require 语句

下面是代码!

const qs = require('qs')

var data = qs.stringify(
    code: code,
    client_id: client_id,
    client_secret: client_secret,
    grant_type: 'authorization_code',
    redirect_uri: redirect_uri,
  )
  var config: any = 
    method: 'post',
    url: url,
    headers: 
      'Content-Type': 'application/x-www-form-urlencoded',
    ,
    data: data,
  

  axios(config)
    .then(function (response) 
      functions.logger.log(JSON.stringify(response.data))
    )
    .catch(function (error) 
      functions.logger.log(error)
    )

【讨论】:

以上是关于如何在 firebase 函数中使用 Axios 正确发送 Post 请求?的主要内容,如果未能解决你的问题,请参考以下文章

使用 React 和 Axios 更新 Firebase 中的数据

带有 axios 的 firebase 身份验证 rest API 请求

如何保存我最近用 axios 创建的 firebase 中的数据并做出反应?

axios.delete 正在从 firebase 数据库中删除所有节点

使用 Axios 和 Firebase 时出现 401 未经授权的错误

在javascript和axios中为来自前端的每个api调用发送firebase身份验证令牌