我正在尝试在NodeJS应用中实施Twitter登录。
根据Twitter上的documentation,我需要通过POST请求将以下参数传递给此url。 URL:
https://api.twitter.com/oauth/request_token
参数:
oauth_nonce=,
oauth_signature=,
oauth_callback="http%3A%2F%2Fmyapp.com%3A3005%2Ftwitter%2Fprocess_callback",
oauth_signature_method="HMAC-SHA1",
oauth_timestamp="currentTimestamp",
oauth_consumer_key=“myKEY”,
oauth_version="1.0"
我正在为oauth_nonce
参数传递一个随机字符串。我不清楚如何创建oauth_signature
?
每当我发出POST请求时,由于我猜不正确的oauth_nonce
和oauth_signature
值,我总是收到215错误。
在NodeJS中发出请求时,如何生成oauth_nonce
和oauth_signature
值。
答案 0 :(得分:3)
这些参数需要在您的授权标头中传递:
OAuth oauth_nonce="K7ny27JTpKVsTgdyLdDfmQQWVLERj2zAK5BslRsqyw",
oauth_callback="http%3A%2F%2Fmyapp.com%3A3005%2Ftwitter%2Fprocess_callback",
oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1300228849",
oauth_consumer_key="OqEqJeafRSF11jBMStrZz",
oauth_signature="Pc%2BMLdv028fxCErFyi8KXFM%2BddU%3D",
oauth_version="1.0"
但是在此之前,您需要获取一个签名,然后将为您提供上面的所有参数。选中the documentation here。
建议使用passport之类的第三方库,如果需要的话,可以大大简化此过程。
答案 1 :(得分:1)
回答您的问题:
在NodeJS中发出请求时,如何生成oauth_nonce和oauth_signature值。
浏览这些帖子将对您Creating a signature和How to generate an OAuth nonce有所帮助。
如果使用得当,Twitter具有很大的意义。我看过一些对我周围的人很有用的教程,我觉得也许您可能想检查Node Authentication: Twitter和Implementing Sign in with Twitter for Node.js
或者您可能要检查passportjs
您将必须通过运行以下命令将其安装在项目中:
npm install passport-twitter
const passport = require('passport')
, TwitterStrategy = require('passport-twitter').Strategy;
passport.use(new TwitterStrategy({
consumerKey: TWITTER_CONSUMER_KEY,
consumerSecret: TWITTER_CONSUMER_SECRET,
callbackURL: "http://www.example.com/auth/twitter/callback"
},
function(token, tokenSecret, profile, done) {
User.findOrCreate(..., function(err, user) {
if (err) { return done(err); }
done(null, user);
});
}
));
此Github回购可能对您很有帮助。
如果您使用的是reactjs,则此(npm i react-twitter-auth)也可能对您有用。
答案 2 :(得分:0)
无法发表评论,这就是为什么在这里回答。
docu表示,oauth_nonce
:
是您的应用程序应为每个唯一请求生成的唯一令牌
就像加密的盐一样。您可以在同一链接下找到oauth_signature
。 here描述了如何生成它。
答案 3 :(得分:0)
最后我可以使用this库
获取访问令牌。