我正在寻求访问一个端点,让我可以撤销我的 Github 应用程序的授权。我对这个问题很困惑,因为。
我尝试过使用全部 3 个,但它们都给了我
404
错误。
在上面列出的 2 个端点中,它表示:
访问此端点时必须使用基本身份验证,使用应用程序的 client_id 和 client_secret 作为用户名和密码。
但是,它们的示例代码都不包含
client_secret
,始终只是 client_id
。
我正在使用 RestAPI 进行通话。这是我的代码:
chrome.storage.local.get(["github_token"]).then((result) => {
let token = result.github_token;
if (token) {
let client_id = import.meta.env.VITE_CLIENT_ID
const URL = `https://api.github.com/applications/${client_id}/grant`;
const xhr = new XMLHttpRequest();
xhr.addEventListener('readystatechange', function () {
if (xhr.readyState === 4) {
if (xhr.status === 204) {
console.log("logged out")
navigate('/auth')
} else {
console.log("awww fuck")
}
}
});
xhr.open('DELETE', URL, true);
xhr.setRequestHeader('Authorization', `token ${token}`);
xhr.setRequestHeader('Accept', 'application/vnd.github.v3+json');
xhr.send();
} else {
// smth went wrong
}
})
我在 NODE.js API 中遇到了同样的问题,经过一些研究和测试,我找到了在标头中发送
client_id
和 client_secret
作为基本身份验证的方式,而不是带有 access_token
的承载,以及 access_token
作为删除请求中的数据。
我可以使用 Axios 提供 JavaScript 代码片段,这可能会有所帮助:
const revokeAccess = await axios.delete(
`https://api.github.com/applications/${CLIENT_ID_GITHUB}/grant`,
{
headers: {
Authorization: `Basic ${Buffer.from(CLIENT_ID_GITHUB + ':' + CLIENT_SECRET_GITHUB).toString('base64')}`,
Accept: 'application/vnd.github+json',
'X-GitHub-Api-Version': '2022-11-28',
},
data: {
access_token: access_token,
}
}
);
尝试一下,如果它有助于解决您的问题,请告诉我!