node.js(10.x)とexpress(3.x)でWebアプリケーションを作成しています。
そして、node-oauthを twitter oauth モジュールとして選択しました。
しかし、トークンを要求すると、次のエラーが返されます。
{ statusCode: 401, data: '<?xml version="1.0" encoding="UTF-8"?>\n\n <request>/oauth/request_token</request>\n <error>指定された URL が考慮されますマルウェア</error>\n</hash>\n' }
認証は数回成功しましたが、突然このエラーが送信され、その後は成功しませんでした。
どうしたの?リクエストの多さが原因?
コードは次のようなものです
var oauth = require('oauth');
var consumer = new oauth.OAuth(
'https://api.twitter.com/oauth/request_token'
, 'https://api.twitter.com/oauth/access_token'
, 'My consumer key'
, 'My consumer secret'
, '1.0A'
, 'http://localhost:3000/sessions/access' //I'm testing in local
, 'HMAC-SHA1'
);
/** In the actual code, Some express settings exist like followings
* var express = require('express');
* var app = express();
* app.set(foo, bar);
* app.use(baz);
* and so on.
*/
app.get('/sessions/connect', function(req, res, next) {
consumer().getOAuthRequestToken(function(err, oauthToken, oauthTokenSecret, results) {
if (err) { //This err says the above error.
next(err);
} else {
req.session.oauthRequestToken = oauthToken;
req.session.oauthRequestTokenSecret = oauthTokenSecret;
res.redirect('https://api.twitter.com/oauth/authorize?oauth_token=' + oauthToken);
}
});
});
app.get('/sessions/access', function(req, res, next) {
consumer().getOAuthAccessToken(req.session.oauthRequestToken, req.session.oauthRequestTokenSecret, req.query.oauth_verifier, function(err, oauthAccessToken, oauthAccessTokenSecret, results) {
if (err) {
next(err);
} else {
req.session.oauthAccessToken = oauthAccessToken;
req.session.oauthAccessTokenSecret = oauthAccessTokenSecret;
req.session.user_id = results.user_id;
req.session.isAuthorized = true;
res.redirect('/');
}
});
});
ありがとう