Node.js에서 Tumblr API의 Access Token 얻기
※2015/03/10 시점
소개
최근 tumblr의 제휴를 여러가지 조사하고 있습니다. API 경유로 POST하는 방법을 조사했습니다만, twitter등에서 자주(잘) 있는 OAuth인 인증답게,
필요 같네요. twitter bot 라든지 만들 때 자주 볼 수 있습니다.
참고 : OAuth란? ―OAuth의 개념과 OAuth로 할 수 있는 일
Consumer Key와 Consumer Secret 취득
여기에서 앱 등록을 하고 진행하면 이 두 가지 정보를 얻을 수 있습니다.
Access Token 및 Access Token Secret 얻기
여기가 귀찮은 곳입니다. Twitter라면 앱의 관리 화면에서 이 두 가지 정보를 얻을 수 있지만 Tumblr은 독자적으로 구현해야 하는 것 같다.
Node.js에서 가져 오는 동기 부여
PHP의 샘플 은 잘 보지만, Node.js 샘플은별로 없었기 때문에 정리해 보겠습니다.
Tumblr API의 Access-Token을 취득하는 서비스를 만들어 보았다. 하고 있는 사람도 있었지만, 잘 움직이지 않았던 땀
내용 보면 간단할 것 같기 때문에 바삭하게 만들어 버립니다.
구현
참고 : h tp // w w.ぁけーあんでr그래. 코 m / 포 st / 50에 7db311에 31c2020000000
참고 사이트의 코드는 express의 낡은 버젼인 것 같고, 이쪽에서 재작성해 보았습니다.
모듈 설치
$ npm i --save express oauth
tumblrConsumerKey와 tumblrConsumerSecret에 각각 얻은 Consumer Key와 Consumer Secret을 지정합니다. 그리고는 코피페로 움직인다고 생각합니다.
app.js
var express = require('express'),
oauth = require('oauth'),
http = require('http');
var app = express();
app.set('port', process.env.PORT || 3000);
var tumblrConsumerKey = "****************",
tumblrConsumerSecret = "*******************",
tumblrOauthAccessToken = undefined,
tumblrOauthAccessTokenSecret = undefined,
oauthRequestToken,
oauthRequestTokenSecret;
//OAuth用オブジェクト
var consumer = new oauth.OAuth(
"http://www.tumblr.com/oauth/request_token",
"http://www.tumblr.com/oauth/access_token",
tumblrConsumerKey,
tumblrConsumerSecret,
"1.0A",
"http://localhost:3000/auth/callback",
"HMAC-SHA1"
);
//リクエストトークン生成
app.get('/', function (req, res) {
consumer.getOAuthRequestToken(function(error, oauthToken, oauthTokenSecret){
if (error) {
res.send("Error getting OAuth request token: " + error, 500);
} else {
oauthRequestToken = oauthToken,
oauthRequestTokenSecret = oauthTokenSecret;
res.redirect("http://www.tumblr.com/oauth/authorize?oauth_token=" + oauthRequestToken);
}
});
});
//アクセストークン取得
app.get('/auth/callback', function (req, res) {
consumer.getOAuthAccessToken(oauthRequestToken, oauthRequestTokenSecret, req.query.oauth_verifier, function(error, _oauthAccessToken, _oauthAccessTokenSecret) {
if (error) {
res.send("Error getting OAuth access token: " + error, 500);
} else {
tumblrOauthAccessToken = _oauthAccessToken;
tumblrOauthAccessTokenSecret = _oauthAccessTokenSecret;
//AccessTokenとAccessTokenSecretを表示
res.send('Access Token:' + tumblrOauthAccessToken +'<br/>Access Token Secret:'+tumblrOauthAccessTokenSecret);
}
});
});
http.createServer(app).listen(app.get('port'), function () {
console.log('Express server listening on port ' + app.get('port'));
});
실행
$ node app.js
Express server listening on port 3000
http://localhost:3000 방문하면
이런 느낌의 페이지로 리디렉션됩니다.
Allow를 선택합시다.
Access Token:*******************************
Access Token Secret:***************************
이런 식으로 두 가지 정보를 얻을 수 있어야합니다.
그리고는 API 경유로 POST하거나 여러가지 할 수 있네요.
Reference
이 문제에 관하여(Node.js에서 Tumblr API의 Access Token 얻기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/n0bisuke/items/c12963e0bde614443adf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)