如何使用Github API撤销OAuth认证?

问题描述 投票:0回答:3

这是我正在使用的代码,但我不断收到 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 进行身份验证时返回的令牌。

node.js github oauth netlify-function
3个回答
1
投票

检查令牌授权标头是否(如此处)效果更好:

Authorization: `token ${process.env.GITHUB_TOKEN}`,

1
投票

我想通了。首先,我必须修改我的 axios 请求才能看到完整的错误消息。在 try-catch 的“catch”部分中,我能够查看

error.response.data
的值。

我收到的错误是“必须启用 Cookie 才能使用 github”。

谷歌搜索后,有人有同样的错误评论说他们必须使用主机

api.github.com
。 原来我用的是
github.com
。一旦我改变了这个,错误就消失了。


0
投票

其他方式:

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";
}
© www.soinside.com 2019 - 2024. All rights reserved.