node.js上的OAuth问题

Tho*_*mas 21 javascript oauth node.js

我想让OAuth在node.js上工作.我在node-oauth的文档中找到了这个:

var OAuth= require('oauth').OAuth;
var oa = new OAuth(requestUrl,accessUrl,consumerKey,consumerSecret,"1.0A",responseUrl,"HMAC-SHA1");
Run Code Online (Sandbox Code Playgroud)

官方教程的下一步说:

"然后根据正常渠道获取有效的访问令牌+访问令牌秘密"

这些"正常渠道"是什么?

我知道用户必须在"供应商"网站上以某种方式进行身份验证,并且通过某种方式调用响应URL,但我找不到如何实现此操作的说明.有人可以开导我吗?

mat*_*nus 23

我不确定你要连接的OAuth服务是什么,所以我只是以twitter为例.创建OAuth对象后,您需要先请求oauth令牌.当您获得该令牌时,您需要重定向到Twitter,他们的身份验证页面会提示他们登录,然后询问该应用程序是否可以登录.

oa.getOAuthRequestToken(function(error, oauth_token, oauth_token_secret, results){
  if (error) new Error(error.data)
  else {
    req.session.oauth.token = oauth_token
    req.session.oauth.token_secret = oauth_token_secret
    res.redirect('https://twitter.com/oauth/authenticate?oauth_token='+oauth_token)
   }
});
Run Code Online (Sandbox Code Playgroud)

首次创建OAuth对象时,可以设置responseURL或回调URL.它可以是任何东西,对于我的应用程序它只是/ oauth /回调.在该回调中,您将收到oauth验证程序令牌.然后,您可以使用oauth请求令牌和oauth验证程序令牌来请求访问令牌.当您收到访问令牌时,您还会收到他们传递的任何其他内容,例如他们的用户名.

app.get('/oauth/callback', function(req, res, next){
  if (req.session.oauth) {
    req.session.oauth.verifier = req.query.oauth_verifier
    var oauth = req.session.oauth

    oa.getOAuthAccessToken(oauth.token,oauth.token_secret,oauth.verifier, 
      function(error, oauth_access_token, oauth_access_token_secret, results){
        if (error) new Error(error)
        console.log(results.screen_name)
    }
  );
} else
  next(new Error('No OAuth information stored in the session. How did you get here?'))
});
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!当我开始这个时,我遇到了同样的问题.