我正在尝试让 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/