【发布时间】:2022-02-02 07:57:23
【问题描述】:
我正在使用 firebase 的实时数据库来存储数据,并且我的权限规则设置为:
{
"rules": {
"users": {
"$uid": {
".write": "$uid === auth.uid",
".read": "$uid === auth.uid"
}
}
}
}
我正在尝试使用 rest/fetch 读取和写入数据库,它似乎工作正常。但经过一番调查,它似乎只对我有效,其他用户收到401 unauthorized 响应。我的代码看起来像
chrome.identity.getAuthToken({ interactive: true }, (token) => {
let url = this.url + `users/${id}.json?access_token=${token}`;
const headers = new Headers({
"Content-Type": "application/json",
});
fetch(url, { headers: headers })
.then((res) => {
console.log(res);
return res.json();
})
});
Token是通过扩展后台页面调用getAuthToken获取的。 id是通过调用chrome.identity.getProfileUserInfo找到的:
chrome.identity.getProfileUserInfo((info) => {
email = info.email;
userId = info.id;
});
我还有以下范围,我认为可以从 firebase 进行读写:https://www.googleapis.com/auth/datastore
有什么想法吗?我很困惑为什么它会起作用,但仅限于我。
【问题讨论】:
-
这可能取决于变量
id和token是如何初始化的。您可以编辑您的问题以显示这一点吗? --- 请注意,范围https://www.googleapis.com/auth/datastore与 Firebase 实时数据库无关。 -
感谢弗兰克的输入,我已经更新了我如何获得
id和token的问题。我这里的方法不正确吗?感谢帮助 -
我回答了我对下面发生的事情的最佳猜测,所以让我们继续下去吧????
-
嘿@JesseSliter。有更新吗?
-
抱歉回复缓慢。我 95% 确定您的答案是正确的,并且我需要重构我的代码以使用 firebase auth。我只是还没有解决它。同时,我会继续将您的回复标记为已接受的答案,如果出于某种原因不正确,请进行更改。
标签: javascript rest firebase-realtime-database oauth google-api-js-client