This is my code in login api in next.js: Login.js file -
import { magicAdmin } from "../../lib/magic";
import jwt from "jsonwebtoken";
export default async function login(req, res) {
if (req.method === "POST") {
try {
const auth = req.headers.authorization;
const didToken = auth ? auth.substr(7) : "";
console.log({ didToken });
const metadata = await magicAdmin.users.getMetadataByToken(didToken);
console.log({ metadata });
const token = jwt.sign(
{
...metadata,
iat: Math.floor(Date.now() / 1000),
exp: Math.floor(Date.now() / 1000 + 7 * 24 * 60 * 60),
"https://hasura.io/jwt/claims": {
"x-hasura-allowed-roles": ["user", "admin"],
"x-hasura-default-role": "user",
"x-hasura-user-id": `${metadata.issuer}`,
},
},
"thisisasecretthisisasecret4445822"
);
console.log("generate", token);
res.send({ done: true });
} catch (error) {
console.error(error);
res.status(500).send({ done: false });
}
} else {
res.send({ done: false });
}
}
when i send POST request using thunderclient it is giving me this error:
{ didToken: 'token1' }
MagicAdminSDKError: Magic Admin SDK Error: [ERROR_MALFORMED_TOKEN] The DID token is malformed or failed to parse.
at new MagicAdminSDKError (/home/jinalkhatri/Documents/Next Tutorials/netflix/node_modules/@magic-sdk/admin/dist/core/sdk-exceptions.js:22:28)
at Object.createMalformedTokenError (/home/jinalkhatri/Documents/Next Tutorials/netflix/node_modules/@magic-sdk/admin/dist/core/sdk-exceptions.js:54:12)
at Object.parseDIDToken (/home/jinalkhatri/Documents/Next Tutorials/netflix/node_modules/@magic-sdk/admin/dist/utils/parse-didt.js:33:32)
at TokenModule.decode (/home/jinalkhatri/Documents/Next Tutorials/netflix/node_modules/@magic-sdk/admin/dist/modules/token/index.js:86:40)
at TokenModule.getIssuer (/home/jinalkhatri/Documents/Next Tutorials/netflix/node_modules/@magic-sdk/admin/dist/modules/token/index.js:95:21)
at UsersModule.<anonymous> (/home/jinalkhatri/Documents/Next Tutorials/netflix/node_modules/@magic-sdk/admin/dist/modules/users/index.js:137:41)
at step (/home/jinalkhatri/Documents/Next Tutorials/netflix/node_modules/@magic-sdk/admin/dist/modules/users/index.js:46:23)
at Object.next (/home/jinalkhatri/Documents/Next Tutorials/netflix/node_modules/@magic-sdk/admin/dist/modules/users/index.js:27:53)
at /home/jinalkhatri/Documents/Next Tutorials/netflix/node_modules/@magic-sdk/admin/dist/modules/users/index.js:21:71
at new Promise (<anonymous>) {
code: 'ERROR_MALFORMED_TOKEN',
data: []
}
i have added this as token in Bearer token field of Thunderclient: token12wert
This is magic.js file:
import { Magic } from "@magic-sdk/admin";
export const magicAdmin = new Magic(process.env.NEXT_PUBLIC_MAGIC_SERVER_KEY);
The Bearer token which i was passing in the Thunderclient was wrong.
This is how i got the correct token:
import { magic } from "../../lib/magic-client";
const didToken = await magic.user.getIdToken();
console.log({didtoken});
and then passed this into the Thunderclient as Bearer Token, and it solved the issue.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.