javascript - node.js 上的 OAuth 问题

标签 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");

official tutorial 中的下一步说:

"Then get hold of a valid access token + access token secret as per the normal channels"

这些“正常 channel ”是什么?

我知道用户必须以某种方式在“vendor ”站点上进行身份验证,并且通过某种方式调用了响应 url,但我找不到如何实现这一点的描述。有人能启发我吗?

最佳答案

我不确定您要连接的 OAuth 服务是什么,所以我将仅使用 twitter 作为示例。创建 OAuth 对象后,您需要首先请求一个 oauth token 。当您获得该 token 时,您需要针对 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)
   }
});

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

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?'))
});

希望这会有所帮助!当我开始做这个时,我遇到了同样的问题。

关于javascript - node.js 上的 OAuth 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5428745/

相关文章:

github - GitHub/.well-known/openid-configuration URL 是什么?

javascript - 循环访问 http 方法数组

javascript - 如何从 mongoDB 中分离字符串

javascript - 函数装饰器在没有 eval 的情况下重新分配提升的内部函数

java - 从 HTML/JS 迁移到 GWT

javascript - chrome - 在调试脚本中相当于 Visual Studio 的 F5

mobile - 什么 OpenID Connect 授权流程可以对移动应用程序用户进行身份验证?

javascript - 我正在尝试制作 RLE 代码但没有成功

php - 如何使用 OAUTH 2 验证受信任的应用程序

javascript - DNS 查找特定服务器