1

我正在尝试使用 JWT 对 Realm Cloud 进行身份验证。我使用 Firebase 作为身份验证服务,并尝试创建一个 Google Cloud Function 来生成 JWT。我使用终端命令“ssh-keygen”生成了私钥和公钥。Realm 的 JWT 教程建议使用以下代码行来读取密钥文件:

const key = fs.readFileSync('./functions/id_rsa', 'utf8'); 

我将私钥复制到项目中,将上面的代码指向文件,但是当我部署 Google Cloud Function 时,收到以下错误消息:

⚠ 函数[myAuthFunction(us-central1)]:部署错误。加载用户代码时函数失败。错误消息:无法加载文件 index.js 中的代码。您的代码中是否存在语法错误?详细的堆栈跟踪:错误:ENOENT:没有这样的文件或目录,打开'./functions/id_rsa'

我的项目结构如下: 图片

我曾尝试在 Realm 的论坛上提问,但没有得到太多帮助。他们建议的整个云功能是:

const functions = require("firebase-functions");
const jwt = require('jsonwebtoken');
const fs = require('fs');
const key = fs.readFileSync(’pathToMyPrivateKeyFile');
exports.myAuthFunction = functions.https.onCall((data, context) => {    
    const uid = context.auth.uid 
    const payload = { userId: uid }    
    const token = jwt.sign(payload, { key: key, passphrase: "your-passphrase" }, { algorithm: 'RS256'}),    
    return { token:token }
});

综上所述,谷歌云功能如何读取我项目中的私钥文件?公钥存储在我的 Realm Cloud 仪表板中,用于特定实例。

来源: Realm Cloud JWT Firebase 教程

4

1 回答 1

1

尝试通过./id_rsaid_rsa。我相信路径根目录是 index.js 文件所在的位置。

于 2020-02-03T16:39:44.330 回答