我的OAuth设置了护照,Twitter和登录和认证工作正常Twitter的API调用。尝试执行授权请求(如更新状态)时会出现问题。使授权与节点的OAuth和护照
passport.use(new TwitterStrategy({
consumerKey: config.twitter.clientID
, consumerSecret: config.twitter.clientSecret
, callbackURL: config.twitter.callback_url || 'http://' + config.domain + '/auth/twitter/callback'
},
function(token, tokenSecret, profile, done) {
Player.findOne({ 'twitter.id': profile.id }, function (err, player) {
if (err) { return done(err) }
if (!player) {
var player = new Player({
name: profile.displayName
, twitter: profile._json
, twitter_token: token
, twitter_tokenSecret: tokenSecret
})
player.save(function (err, player) {
if (err) log.error(err);
return done(err, player);
})
}
else {
return done(err, player)
}
})
}
))
所以这节省了玩家通过猫鼬和工作。我节省护照给令牌和tokenSecret,并假定它们已与oAuth().getOAuthRequestToken()
产生的来自Twitter原回调的一部分,所以应该是有效的给定的登录会话的其余部分。 (?也许是坏的假设)
后来,当我们要鸣叫的东西对于用户来说,其获取的播放记录和其相关的令牌+秘密:
function twitter_oauth() {
return new OAuth (
"https://api.twitter.com/oauth/request_token",
"https://api.twitter.com/oauth/access_token",
keys.consumerKey,
keys.consumerSecret,
"1.0",
null,
"HMAC-SHA1"
)
}
....
twitter_oauth().post(api_endpoint, token, secret, body, "application/json",
function (error, data, res) {
if (error) {
console.error(error)
} else {
console.log('tweet sent')
}
}
)
对此的回应仅仅是状态401和“无法通过OAuth进行身份验证”。
所以,我失去了一些重要的东西?我还没有挖掘到护照源,找出token
和tokenSecret
论点实际上是,但要求在这里希望有人会指出,在上述重大缺陷。看到
发现实际PARAMS被张贴,他们似乎都在那里,合理: POST /1/statuses/update.json HTTP/1.1 \ r 授权:OAuth的 oauth_consumer_key = “QtYPhe8Es3ohYs69JhR9UQ”,oauth_nonce =” 9ywy2s eTxJPFobX5vaYWahoU0v1QVd4a”,oauth_signature_method = “HMAC-SHA1”,oauth_timestamp = “1354253395”,组oauth_token = “17236341-ldvJkClcdwbk1Naax7KBHRgwso7o4 GtzxGpLPAks”,oauth_version = “1.0”,oauth_signature = “Ut5XGNA0Za4PlVQkgXoMJELY0Jo%3D” 主机:api.twitter.com – sbeam