2

我在 Notion.so 上创建了一个集成

我使用以下 URL Add to Notion获得了临时 OAuth 代码

这个上面的 URL,在从 Notion UI 授权之后, XXXXXXX-XXXXXXX 现在使用上面步骤中的代码给我下面的代码来获取授权代码

POST https://api.notion.com/v1/oauth/token HTTP/1.1
Authorization: Basic XXXXXXXOnNlY3JldF9DeXp0d1A0TVNLZkZIY0XXXXXXXXX
Content-Type: application/json
Content-Length: 164

{
    "grant_type": "authorization_code",
    "code": "XXXXXX-XXXXX",
    "redirect_uri": "http://localhost:8080/api/notion/auth/callback"
}

这个回应在

{
  "error": "invalid_grant"
}

我错过了什么?

提前致谢!

4

3 回答 3

6

尝试从两个调用中删除重定向 URL 以获取访问代码和授权令牌。当我尝试这个时,这从服务器返回了成功响应。

app.get(auth_path, (req, res) => {
  res.redirect(
    //Documentation expects "${api_url}/v1/oauth/authorize?client_id=${process.env.NOTION_ID}&response_type=code&redirect_uri=${redirect_uri}"
    encodeURI(`${api_url}/v1/oauth/authorize?client_id=${process.env.NOTION_ID}&response_type=code`),
  );
});

`enter code here`app.get(access_token_path, ({query: {code}}, res) => {
  //Exchange authorization code for access token
  axios({
    method:"post",
    url:"https://api.notion.com/v1/oauth/token", 
    data: {
    "code":code,
    "grant_type": "authorization_code",
    
    }, 
    headers: {
    "Authorization": `Basic ${auth_token}`,
    "Content-Type": "application/json"
    }
  }).then((response) => {
    res.sendStatus(200)
  }).catch((err => {
    console.log(err)
    res.sendStatus(500)
  }))
});
于 2021-06-01T05:28:55.590 回答
1

就我而言,我redirect_uri在两个请求中都需要。redirect_uri但仔细检查你有两次完全相同。我错过了斜杠

于 2021-07-28T23:36:01.223 回答
0

如果您尝试将集成添加到已具有此集成的工作区,也可能会附加此错误。

转到您的工作区设置,删除集成并重试整个身份验证过程。它应该解决问题。

于 2021-06-02T13:36:38.240 回答