从发送iOS应用一个简单的字符串的Node.js服务器,并对其进行解码
我有一个iOS应用程序,我必须在用户与他们的LinkedIn账户的火力地堡数据库签名。我已经设法他们登录自己与他们的LinkedIn应用程序,所以我有用户信息。
据火力地堡,我有什么做的是用户ID发送到我的服务器,在那里我有薄荷自定义的令牌,然后我要发回的应用程序,并签署了用户在自定义标记。
我已成立了一个Node.js的服务器,我设法将用户ID发送给服务器。我试图发送回用户ID正好看到一切正常,然后我就能薄荷令牌通过以下对火力地堡的相关教程。
这是到目前为止我的代码在iOS应用:
func sendInfoToServer() {
let uid = "this-is-the-user-id"
let linkedinUserID = uid.data(using: .utf8)
let apiRoute = "the-address-to-my-server"
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常量必须声明为req.body.lid
实际上指的是LinkedIn ID。
然后,我需要在我的js文件的火力管理员SDK,并得到了与下面的代码自定义标记:
admin.auth().createCustomToken(linkID)
.then((customToken) => {
res.json({
customToken
})
})
从发送iOS应用一个简单的字符串的Node.js服务器,并对其进行解码
我有一个iOS应用程序,我必须在用户与他们的LinkedIn账户的火力地堡数据库签名。我已经设法他们登录自己与他们的LinkedIn应用程序,所以我有用户信息。
据火力地堡,我有什么做的是用户ID发送到我的服务器,在那里我有薄荷自定义的令牌,然后我要发回的应用程序,并签署了用户在自定义标记。
我已成立了一个Node.js的服务器,我设法将用户ID发送给服务器。我试图发送回用户ID正好看到一切正常,然后我就能薄荷令牌通过以下对火力地堡的相关教程。
这是到目前为止我的代码在iOS应用:
func sendInfoToServer() {
let uid = "this-is-the-user-id"
let linkedinUserID = uid.data(using: .utf8)
let apiRoute = "the-address-to-my-server"
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常量必须声明为req.body.lid
实际上指的是LinkedIn ID。
然后,我需要在我的js文件的火力管理员SDK,并得到了与下面的代码自定义标记:
admin.auth().createCustomToken(linkID)
.then((customToken) => {
res.json({
customToken
})
})