这是我正在使用的代码,但我不断收到 403 错误响应。
let username = "CLIENT_ID_GOES_HERE";
let password = "SECRET_GOES_HERE";
let basicAuth = Buffer.from(`${username}:${password}`).toString('base64');
try {
response = await axios.delete(`https://github.com/applications/${clientId}/grant`,
{
headers: {
'Authorization': `Basic ${basicAuth}`,
'Accept': 'application/vnd.github.v3+json',
},
data: {
access_token: token
}
});
} catch (e) {
return {
statusCode: 502,
body: JSON.stringify(e)
}
}
我已验证客户端 ID、密码和令牌均正确。我使用的令牌是 github 进行身份验证时返回的令牌。
检查令牌授权标头是否(如此处)效果更好:
Authorization: `token ${process.env.GITHUB_TOKEN}`,
我想通了。首先,我必须修改我的 axios 请求才能看到完整的错误消息。在 try-catch 的“catch”部分中,我能够查看
error.response.data
的值。
我收到的错误是“必须启用 Cookie 才能使用 github”。
谷歌搜索后,有人有同样的错误评论说他们必须使用主机
api.github.com
。 原来我用的是github.com
。一旦我改变了这个,错误就消失了。
其他方式:
TOKEN = "..."
GITHUB_CLIENT_ID = "..."
GITHUB_CLIENT_SECRET = "..."
try {
const credentials = `${GITHUB_CLIENT_ID}:${GITHUB_CLIENT_SECRET}`;
const encodedCredentials = btoa(credentials);
const response = await fetch(`https://api.github.com/applications/${GITHUB_CLIENT_ID}/token`, {
method: 'DELETE',
headers: {
Authorization: `Basic ${encodedCredentials}`,
Accept: 'application/vnd.github+json',
'X-GitHub-Api-Version': '2022-11-28',
},
body: JSON.stringify({
access_token: TOKEN
})
});
if (response.ok) {
console.log('Successfully revoked Github token');
return "Successfully revoked Github token";
} else {
console.error('Failed to revoke Github token', response.statusText);
return "ERROR";
}
} catch (error) {
console.error('Error revoking Github token:', error);
return "ERROR";
}