如何在无头远程服务器上登录`firebase-tools`?

时间:2017-05-07 05:08:50

标签: linux firebase firebase-tools

我试图通过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命令完全相同。

如何解决此问题?

2 个答案:

答案 0 :(得分:0)

此处介绍了如何为CI和无头服务器设置Firebase的过程: https://github.com/firebase/firebase-tools#using-with-ci-systems

  

Firebase CLI需要使用浏览器来完成身份验证,但与CI和其他无头环境完全兼容。

     
      
  1. 在具有浏览器的计算机上,安装Firebase CLI。
  2.   
  3. 运行firebase login:ci登录并打印出新的刷新令牌(当前的CLI会话将不受影响)。
  4.   
  5. 以安全但可访问的方式将输出令牌存储在CI系统中。
  6.   
     

运行Firebase命令时有两种使用此令牌的方法:

     
      
  1. 将令牌存储为环境变量FIREBASE_TOKEN,它将被自动利用。
  2.   
  3. 在CI系统中运行带有--token <token>标志的所有命令。
  4.   

答案 1 :(得分:0)

Firebase尊重您的标准GCP Oauth2令牌。

必须去浏览器并获取代码似乎不太CI或没有头脑。

这对我们有用:

导出GOOGLE_APPLICATION_CREDENTIALS = key.json  #其中key.json是您的服务帐户json文件

export FIREBASE_TOKEN = $(gcloud身份验证应用程序默认打印权限)