I wanted to try FaunaDB, so I made a NodeJS application. I followed along a tutorial which made an application like twitter. However, when I try to access database, I get 403 unauthorized message. I have checked my security keys, but I still get the same error. Any help would be appreciated.
.env file:
KEY=randomString
PORT=5000
index.js:
require("dotenv").config();
const app = require("express")();
const faunadb = require("faunadb");
const client = new faunadb.Client({
secret: process.env.KEY,
});
const {
Paginate,
Get,
Select,
Match,
Index,
Create,
Collection,
Lambda,
Var,
Join,
Ref,
} = faunadb.query;
app.listen(5000, () => console.log(`API on http://localhost:${process.env.PORT}`));
app.get("/tweet/:id", async (req, res) => {
try {
const doc = await client.query(
Get(
Ref(
Collection("tweets"),
req.params.id
)
)
)
res.send(doc);
} catch (err) {
res.send(err)
}
});
Error message:
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 853
ETag: W/"355-EPYXYAwyDrJxa8vWUbY5JYPY+pw"
Date: Thu, 22 Jul 2021 11:12:16 GMT
Connection: close
{
"name": "Unauthorized",
"message": "unauthorized",
"description": "Unauthorized",
"requestResult": {
"method": "POST",
"path": "",
"query": null,
"requestRaw": "{\"create\":{\"collection\":\"test\"},\"params\":{\"object\":{\"data\":{\"object\":{\"testField\":\"testValue\"}}}}}",
"requestContent": {
"create": {
"collection": "test"
},
"params": {
"object": {
"data": {
"object": {
"testField": "testValue"
}
}
}
}
},
"responseRaw": "{\"errors\":[{\"code\":\"unauthorized\",\"description\":\"Unauthorized\"}]}",
"responseContent": {
"errors": [
{
"code": "unauthorized",
"description": "Unauthorized"
}
]
},
"statusCode": 401,
"responseHeaders": {
":status": 401,
"www-authenticate": "Basic realm=\"Unauthorized\"",
"x-txn-time": "1626952335964976",
"x-faunadb-build": "070821.200951-e596d0a",
"content-length": "65",
"content-type": "application/json;charset=utf-8"
},
"startTime": 1626952335231,
"endTime": 1626952336270
}
}
It may be represented as 401 Unauthorized, Authorization required, HTTP error 401- Unauthorized. It represents that the request could not be authenticated. It consists of a www-Authenticate header which contains the hint on how to authorize correctly.
If the domain does not match, then you get a simple 401 error. docs.fauna.com/fauna/current/api/fql/region_groups You are right! I added the parameters and added the domain for the region I specified in the Fauna dashboard (mine was EU so the domain was db.eu.fauna.com).
Delete your browser's cache. There might be invalid login information stored locally in your browser that's disrupting the login process and throwing the 401 error. Clearing the cache will remove any problems in those files and give the page an opportunity to download fresh files directly from the server. If you're sure the page you're trying ...
Instantiating the client like this:
const client = new faunadb.Client({
secret: process.env.KEY,
});
you are applying a few default parameters, as if you write your code this way (I'm specifying the most important ones only):
const client = new faunadb.Client({
secret: process.env.KEY,
domain: 'db.fauna.com',
scheme: 'https',
});
In case you are using US Region group, EU Region group, or Preview environment, "db.fauna.com" default domain won't work for you.
Thus, you need to provide a domain param explicitly in the constructor.
For US Region group:
const client = new faunadb.Client({
secret: process.env.KEY,
domain: 'db.us.fauna.com',
scheme: 'https',
});
For EU Region group:
const client = new faunadb.Client({
secret: process.env.KEY,
domain: 'db.eu.fauna.com',
scheme: 'https',
});
For Preview:
const client = new faunadb.Client({
secret: process.env.KEY,
domain: 'db.fauna-preview.com',
scheme: 'https',
});
You can read more about Region Groups in the docs: https://docs.fauna.com/fauna/current/api/fql/region_groups
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With