我尝试过设置概念OAuth,在邮递员身上一切都很好,但在我的应用程序中却不是。
我尝试过很多种方法,这是我迄今为止所做的最后一次实现。
router
.get("/notion/authorize", async (req : Request, res: Response) => {
let redirectURL = `${process.env.NOTION_AUTH_URL}?owner=user&client_id=${process.env.NOTION_CLIENT_ID}&response_type=code&redirect_uri=${encodeURI(process.env.NOTION_REDIRECT_URI)}`
res.redirect(redirectURL)
})
.get("/notion/callback", async (req: Request<any,any, any, {code : string } >, res: Response) => {
try {
const {code} = req.query;
console.log(code)
if(!code) {
throw new Error("Code is required from notion")
}
const response = await axios.post('https://api.notion.com/v1/oauth/token', {
data:JSON.stringify({
"grant_type":"authorization_code",
"code":code,
"redirect_uri": "http://localhost:9000/notion/callback"
}),
headers: {
"Authorization": `Basic ${Buffer.from(`${process.env.NOTION_CLIENT_ID}:${process.env.NOTION_CLIENT_SECRET}`).toString('base64')}`,
"Content-Type": "application/json",
}
})
const {access_token, bot_id, workspace_id, workspace_name} =response.data;
//.. more code
}catch(err) {
if(axios.isAxiosError(err)) {
console.log(err.response.data, err.response.status)
}
return res.status(400).json({message: `Failed to register user ${err}`})
}
})尽管如此,我还是把它看作是错误{ error: 'invalid_client' } 401
也可以,检查键和重定向URI。
(请帮助我:)
发布于 2021-12-03 13:33:42
看起来你的头好像错了。检查字段授权是否提供与在postman中使用的值相同的值。
另一件事是你的职位要求。我觉得你搞砸了什么东西。在使用request方法时,Axios可以接受一个对象,在使用post方法(Axios文档)时,可以接受3个参数(url、data、config)。在您的代码中,数据和头在一起,应该在不同的对象中分开。
https://stackoverflow.com/questions/70214783
复制相似问题