Получите access_token с помощью fetch () для входа через GitHub - PullRequest
1 голос
/ 20 июня 2020

Я пишу SSO с помощью GitHub и не могу извлечь access_token после использования функции fetch ()

const url = `https://github.com/login/oauth/access_token?client_id=${process.env.GITHUB_CLIENT_ID}&redirect_uri=${process.env.GITHUB_REDIRECT_URI}&client_secret=${process.env.GITHUB_CLIENT_SECRET}&code=${code}`;
    
    fetch(url, {method: 'POST'}).then(result => result.text())  
    .then(text => {
        console.log('text', text)
        access_token = JSON.parse(text)['access_token'] 
    })

результат:

text access_token=fe07bb27637ac176058f2&scope=user%3Aemail&token_type=bearer

Какой файл! Но следующий шаг - получить access_token не удалось с:

UnhandledPromiseRejectionWarning: SyntaxError: Unexpected token e in JSON at position 0
at JSON.parse (<anonymous>)

Я переписал эту часть с помощью суперагента, и он отлично работает. Но все же хочу сделать это возможным с помощью fetch ()

superagent
.post('https://github.com/login/oauth/access_token')
.send({ 
    client_id: `${process.env.GITHUB_CLIENT_ID}`,
    redirect_uri: `${process.env.GITHUB_REDIRECT_URI}`,
    client_secret: `${process.env.GITHUB_CLIENT_SECRET}`,
    code: `${code}`
 }) // sends a JSON post body
.set ('Accept', 'application/json')
.end((err, result) => {
    const token = result.body.access_token

Надеюсь, вы поможете мне выяснить, почему моя fetch () не работает ...

...