繁体   English   中英

将简单的字符串从iOS应用发送到Node.js服务器并对其进行解码

[英]Sending a simple string from iOS app to Node.js server and decoding it

我有一个iOS应用程序,我必须使用其Linkedin帐户登录用户到Firebase数据库。 我已经设法使用他们的Linkedin将他们登录到我的应用程序中,因此我拥有了用户信息。

根据Firebase的介绍,我要做的是将用户ID发送到我的服务器,在这里我必须铸造一个自定义令牌,然后我必须将其发送回应用程序并使用自定义令牌登录用户。

我已经设置了一个Node.js服务器,我设法将用户ID发送到服务器。 我试图发回用户ID只是为了查看一切正常,然后我将能够按照Firebase上的相关教程创建令牌。

到目前为止,这是我在iOS应用中的代码:

func sendInfoToServer() {

        let uid = "this-is-the-user-id"

        let linkedinUserID = uid.data(using: .utf8)

        let apiRoute = "the-address-to-my-server.com"
        guard let url = URL(string: "https://\(apiRoute)/LItoken")         else {
            return
        }

         var urlRequest = URLRequest(url: url, cachePolicy: .returnCacheDataElseLoad, timeoutInterval: 30.0)

        urlRequest.httpMethod = "POST"
        urlRequest.httpBody = linkedinUserID

        let session = URLSession(configuration: URLSessionConfiguration.default)
        let task: URLSessionDataTask = session.dataTask(with: urlRequest) { (data, res, err) in
            guard data != nil, err == nil else {return}
            guard let response = String(data: data!, encoding: .utf8) else {return}

            print("this is the response from server: \(response)")
        }
        task.resume()
    }

这就是我在Node.js中拥有的:

const express = require('express')
const app = express()
const morgan = require('morgan')
const bodyParser = require('body-parser')
const utf8 = require('utf8')

app.use(morgan('combined'))

app.use(bodyParser.urlencoded({
  extended: true
}))

app.post('/LItoken', (req, res) => {

  const linkID = req.body
  const decodedID = utf8.decode(linkID)

res.send("This is the decoded id" + decodedID)
})

const PORT = process.env.PORT || 3003

app.listen(PORT, () => {
  console.log("Server is up on" + PORT)
})

当我在iOS应用中从服务器打印响应时,我只会得到一个空字符串。

我绝对没有服务器端开发或Node.js的经验,因此,如果我的问题很愚蠢或缺少一些基本知识,请原谅我。

在此先感谢您的帮助!

我最终解决了以下问题:必须将linkID const声明为req.body.lid才能实际引用linkedin ID。

然后,在我的js文件中需要firebase-admin sdk,并使用以下代码获取了自定义令牌:

  admin.auth().createCustomToken(linkID)
  .then((customToken) => {
    res.json({
      customToken
      })
  })

暂无
暂无

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

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