首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用授权持有者请求时,在Firebase函数中获取令牌

使用授权持有者请求时,在Firebase函数中获取令牌
EN

Stack Overflow用户
提问于 2018-05-24 13:49:39
回答 1查看 1.6K关注 0票数 0

我目前使用的是Firebase函数v1.0.3和Firebase管理v5.12.1。它似乎与express NodeJS库一起工作得很好。

问题

但是,当我试图通过发送Authorization头来保护请求时:

代码语言:javascript
复制
Authorization: Bearer <token>

它没有显示我的令牌的任何日志。当我在我的Firebase函数index.js文件中使用console.log(request)来获取token时,我看不到任何与BearerAuthorization Bearer (无论什么)匹配的单词。

当我使用console.log时,我从req.headers得到的是以下内容

代码语言:javascript
复制
{ 'content-length': '0',
  'accept-language': 'en-US,en;q=0.9',
  'accept-encoding': 'gzip, deflate, br',
  referer: 'http://localhost:5000/admin/',
  accept: '*/*',
  'access-control-request-headers': 'authorization,content-type',
  'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
  origin: 'http://localhost:5000',
  'access-control-request-method': 'GET',
  connection: 'close',
  host: 'localhost:5001' 
}

文档源

我读过一篇关于Firebase Functions Samples: Authorized HTTPS Endpoint示例代码的文档,其中一些似乎已经过时了。

代码语言:javascript
复制
firebase.auth().currentUser.getToken()

例如,现在是:

代码语言:javascript
复制
firebase.auth().currentUser.getIdToken()

Other Libaries

我尝试过安装诸如express-authorization-bearerexpress-bearer-token之类的库,但仍然无法捕获idToken

我想知道这是NodeJS的问题还是Firebase函数的问题。我当前使用的是NodeJS v6.11.4

问题

如何使用Express或任何使用NodeJS的方法捕获Firebase函数中的令牌?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-31 09:29:47

授权载体起作用了。以下是I console.log(req.headers)时的结果

代码语言:javascript
复制
{ 'accept-language': 'en-US,en;q=0.9',
  'accept-encoding': 'gzip, deflate, br',
  referer: 'http://localhost:5000/admin/',
  accept: '*/*',
  'content-type': 'application/json',
  'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
  origin: 'http://localhost:5000',
  authorization: 'Bearer something',
  connection: 'close',
  host: 'localhost:5001' }

在本例中,tokensomething

重要说明:

  • req.headers.authorization不能与Assigning Multiple Origins一起工作,因为它给出了错误Cannot set headers after they are sent,但它应该很容易工作,因为它允许任何来源,并将cors作为中间件:

var cors = require('cors')({origin: true}); app.use(cors);

req.headers.authorization已经对其进行了保护,不能将anyway.

  • req.headers.authorization分配给参数,否则它将变成来自Authorized HTTPS Endpoints的相同文档,只有完全启用corscookies undefined

  • Using cookie-parser插件和req.headers.authorization并将其发送到firebase-functions端点时,它才能完全工作。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50501861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档