我试图通过Putty在远程Linux服务器上使用firebase-tools
。此服务器上没有运行桌面。
当我运行firebase login
时,我会看到一个需要复制/粘贴到任何其他设备浏览器中的长网址:
https://accounts.google.com/o/oauth2/auth?client_id=xxxxxxxxxxxx.apps.googleusercontent.com&scope=email%20openid%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloudplatformprojects.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Ffirebase%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&response_type=code&state=3kkd93kl&redirect_uri=http%3A%2F%2Flocalhost%3A9005
我将其复制/粘贴到我本地计算机上的浏览器中,然后使用我的Google帐户进行身份验证,然后尝试将我重定向到
http://localhost:9005/?state=25744816&code=4/mz.....
这不是我的机器上运行的实际服务器,并且绝不是远程机器的地址,远程机器甚至没有活动端口9005。
结果是终端仍然处于“等待认证......”
我看到一个名为login:ci
的命令,它表示它适用于非交互式环境,但它似乎与login
命令完全相同。
如何解决此问题?
答案 0 :(得分:0)
此处介绍了如何为CI和无头服务器设置Firebase的过程: https://github.com/firebase/firebase-tools#using-with-ci-systems
Firebase CLI需要使用浏览器来完成身份验证,但与CI和其他无头环境完全兼容。
- 在具有浏览器的计算机上,安装Firebase CLI。
- 运行firebase
login:ci
登录并打印出新的刷新令牌(当前的CLI会话将不受影响)。- 以安全但可访问的方式将输出令牌存储在CI系统中。
运行Firebase命令时有两种使用此令牌的方法:
- 将令牌存储为环境变量
FIREBASE_TOKEN
,它将被自动利用。- 在CI系统中运行带有
--token <token>
标志的所有命令。
答案 1 :(得分:0)
Firebase尊重您的标准GCP Oauth2令牌。
必须去浏览器并获取代码似乎不太CI或没有头脑。
这对我们有用:
导出GOOGLE_APPLICATION_CREDENTIALS = key.json #其中key.json是您的服务帐户json文件
export FIREBASE_TOKEN = $(gcloud身份验证应用程序默认打印权限)