我写了一个验证idToken的函数。我在localHost中部署的应用程序和在Firebase中部署的功能正常运行。但是当我做yarn build
和火力地堡我的申请作出反应的部署,这是行不通的。当我单击调用该函数的组件时,屏幕上将显示构建文件夹的索引文件的html。在package.json文件中,我编写了代理,在Firebase中带有函数路径,在组件中,我使用axios.post (...)
调用了该函数。部署后,我应该修复一些东西使其正常工作吗?
在我的src的package.json我有:
"proxy": "https://us-central1-teste.cloudfunctions.net/",
在我的组件中,我有:
const user = yield auth.currentUser
const {ra} = user
const datas = yield new Promise(resolve => {
resolve(axios.post('/auth?token='+ra))
})
if (datas.data === user.uid){
...
}else{
...
}
在我的云功能我有:
const functions = require('firebase-functions')
const admin = require('firebase-admin')
admin.initializeApp(functions.config().firebase)
exports.auth = functions.https.onRequest((request, response) => {
const idToken = request.query.token
admin.auth().verifyIdToken(idToken)
.then( decodedToken => {
response.send(decodedToken.uid)
return
}).catch( error => {
response.send(error.errorInfo.code)
return
})
})
答案 0 :(得分:1)
您的问题是CORS!尝试这样做:
在您的组件中:
const data = yield new Promise(resolve => {
resolve(axios.post('https://us-central1-teste.cloudfunctions.net/auth?token='+ra))
})
在您的职能中:
const functions = require('firebase-functions')
const admin = require('firebase-admin')
admin.initializeApp(functions.config().firebase)
exports.auth = functions.https.onRequest((request, response) => {
const idToken = request.query.token
admin.auth().verifyIdToken(idToken)
.then( decodedToken => {
response.header("Access-Control-Allow-Origin", "*")
response.send(decodedToken.uid)
return
}).catch( error => {
response.send(error.errorInfo.code)
return
})
})
如果只想限制对系统的访问,请将*更改为'https//:(system's_name)'