Firebase REST API 401 未授权除我之外的所有人
Firebase REST API 401 unauthorized for everyone but me
我正在使用 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
获得的。通过调用 chrome.identity.getProfileUserInfo
:
找到 id
chrome.identity.getProfileUserInfo((info) => {
email = info.email;
userId = info.id;
});
我还有以下范围,我认为可以从 firebase 读取和写入:https://www.googleapis.com/auth/datastore
有什么想法吗?我很困惑为什么它会起作用,但只对我有用。
来自 generating an access token to access the Realtime Database REST API 上的 Firebase 文档:
generate a Google OAuth2 access token with the following required scopes:
您很可能错过了第二个范围。
顺便请注意,这将授予您对数据库的完全管理访问权限,并且不会遵循您的安全规则。这些人本质上是您项目的合作者:他们要么可以 see/edit 所有数据,要么不能。
要允许用户访问数据库 并且 遵循安全规则,用户必须使用 Firebase 身份验证登录,并且您必须传递他们的 ID 令牌到 REST API.
我正在使用 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
获得的。通过调用 chrome.identity.getProfileUserInfo
:
chrome.identity.getProfileUserInfo((info) => {
email = info.email;
userId = info.id;
});
我还有以下范围,我认为可以从 firebase 读取和写入:https://www.googleapis.com/auth/datastore
有什么想法吗?我很困惑为什么它会起作用,但只对我有用。
来自 generating an access token to access the Realtime Database REST API 上的 Firebase 文档:
generate a Google OAuth2 access token with the following required scopes:
您很可能错过了第二个范围。
顺便请注意,这将授予您对数据库的完全管理访问权限,并且不会遵循您的安全规则。这些人本质上是您项目的合作者:他们要么可以 see/edit 所有数据,要么不能。
要允许用户访问数据库 并且 遵循安全规则,用户必须使用 Firebase 身份验证登录,并且您必须传递他们的 ID 令牌到 REST API.