创建Stripe Express Connect帐户,在POST到端点时获取帐户ID的“unsupported_content_type”

时间:2017-07-11 23:06:24

标签: node.js firebase stripe-payments backend stripe-connect

在创建connect express帐户结束时,我无法向条带标记端点发送“POST”请求。目前,我的应用程序(ios)正在打开OAuth链接(其中包含重定向uri到我的服务器(Firebase功能))到由条带创建的快速帐户创建网页。用户完成帐户设置后,我会在后端收到授权码,然后使用授权码和client_secret_key向“https://connect.stripe.com/oauth/token”发送POST请求。我正在使用XMLHttpRequest npm在firebase函数中发送POST请求并设置我的参数

var params = "client_secret=" + CLIENT_SECRET + "&code=" + AUTHORIZATION_CODE + "&grant_type=authorization_code"

和我的请求标题一样

  request.setRequestHeader("Content-type", "application/x-www-form-urlencoded")

然而,我在发送POST请求后收回此错误 "error": { "type": "invalid_request_error", "code": "unsupported_content_type", "message": "Invalid request: unsupported Content-Type text/plain;charset=UTF-8. If error persists and you need assistance, please contact support@stripe.com." }

我以为我正在将请求标头内容类型设置为“application / x-www-form-urlencoded”,但仍然会收到错误,就像内容类型是“Text / plain”一样。

这是完整的后端代码

exports.CreateUsersPayoutAccount = functions.https.onRequest((req, res) =>{
  const userID = req.query.state
  const AUTHORIZATION_CODE = req.query.code

  console.log(userID)
  console.log(AUTHORIZATION_CODE)
  //console.log(req);

  var request = new XMLHttpRequest()
  request.addEventListener('load', getStripeConnectUserID)
  var params = "client_secret=" + CLIENT_SECRET + "&code=" + AUTHORIZATION_CODE + "&grant_type=authorization_code"

  //var params = JSON.stringify({client_secret : CLIENT_SECRET, code : AUTHORIZATION_CODE, grant_type : "authorization_code"})
  console.log(params);
  request.open("POST", "https://connect.stripe.com/oauth/token", true)
  request.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
  //request.setRequestHeader("Content-length", params.length)
  request.send(params)


})

如果有人能指出我正确的方向,我将非常感激,我对写后端HTTP电话有些新意。

1 个答案:

答案 0 :(得分:0)

  1. 在后端云功能中,不是尝试从那里发送POST请求,而是将auth代码写入firebase数据库中的某个位置。
  2. 返回Xcode有一个监听器功能,如果该数据库点发生了变化,则执行该功能。然后该函数应该读取更改(授权代码),并简单地发送一个简单的快速POST请求与Alamofire。
  3. 我理解为什么你将uri直接指向你的特定云功能(因为它是一个http触发器),但不是发送uri的重点,这样条带可以将用户重定向回特定的应用页面,用户是否仍会被定向回到您的案例中的应用程序???