Javascript Khan Academy OAuth无法覆盖default_callback

时间:2018-06-06 05:38:55

标签: javascript oauth khan-academy

我有这个快递应用程序;

const oa = new OAuth(
  'https://www.khanacademy.org/api/auth2/request_token',
  'https://www.khanacademy.org/api/auth2/access_token',
  process.env.CONSUMER_KEY,
  process.env.CONSUMER_SECRET,
  '1.0',
  'http://localhost:3000/oauth/callback',
  'HMAC-SHA1',
  64
)

app.get('/oauth', (req, res) => {
  oa.getOAuthRequestToken(function requestTokenCallback(err, token, token_secret, results) {

    if (err) {
      console.log('requestTokenCallback', err)
      return
    }

    req.session.oauth = req.session.oauth || {}
    req.session.oauth.token = token
    req.session.oauth.token_secret = token_secret
    res.redirect(`https://www.khanacademy.org/api/auth2/authorize?oauth_token=${token}`)
    // I've tried res.redirect(`https://www.khanacademy.org/api/auth2/authorize?oauth_token=${token}&oauth_callback=${encodeURIComponent('http://localhost:3000/oauth/callback')}`)
  })
})

但是,重定向用户后点击accept不会将其重定向到我的回调'http://localhost:3000/oauth/callback'

这位老乡似乎有同样的问题:oauth_callback for Khan Academy API not woring。 但是,我按照答案的说明进行了操作,并使用oauth_callback参数重定向,但没有用。

我对oauth一般都是新手,但我不相信这是我的错。我只需要某种解决方法。

1 个答案:

答案 0 :(得分:0)

khan npm软件包https://www.npmjs.com/package/khan允许在调用oauth_callback时指定.requestToken()。例如:

khan.requestToken('www.myapp.com/my_callback')

oauth_callback参数传递到.requestToken()函数中可确保将通过身份验证的用户重定向到指定的站点。由于具有可靠的功能,承诺和表达性语义,与使用node-oauth相比,这是一个更友好的解决方案。