BETA

勉強ログ:Evernote APIをNode.jsで使う

投稿日:2020-03-18
最終更新:2020-03-18

基本的にやってることはこれとほぼ同じ。
https://dev.evernote.com/doc/start/javascript.php

今回はdeveloper tokenを使わずにOAuth認証を通してoauthAccessTokenを手に入れることにした。
view engineとか使いたくなかったので極力シンプルに1つのファイルで済ませられるように。
expressベース。

使い方

hoge.com/oauthにアクセスするとEvernoteの認証画面が開く。
認証したら帰ってきたindex orコンソール画面にoauthAccessTokenがあるので
Evernote.Clientにセットしてあげてください。

インストールするべきもの

evernote,express-session,body-parser,express

var bodyParser = require('body-parser');  
var express = require('express');  
var expressSession = require('express-session');  
var Evernote = require('evernote');  
const app = express();  

app.use(bodyParser.urlencoded({extended: true}));  
app.use(bodyParser.json());  
app.use(expressSession({  
  secret: 'supersecretsecret',  
  resave: false,  
  saveUnititialized: true  
}));  

config = {  
    consumerKey: 'hoge',  
    consumerSecret: 'hoge',  
    sandbox: true,  
    china: false,  
}  

var callbackUrl = "http://hoge.com/oauth_callback";  

var index = function(req, res) {  
    res.send('oauthAccessToken:'+req.session.oauthAccessToken);  
  };  

var oauth = function(req, res) {  
    var client = new Evernote.Client({  
        consumerKey: config.consumerKey,  
        consumerSecret: config.consumerSecret,  
        sandbox: config.sandbox,  
        china: config.china,  
    });  

    client.getRequestToken(callbackUrl, function(error, oauthToken, oauthTokenSecret, results) {  
      if (error) {  
        req.session.error = JSON.stringify(error);  
        res.redirect('/');  
      } else {  
        req.session.oauthToken = oauthToken;  
        req.session.oauthTokenSecret = oauthTokenSecret;  
        res.redirect(client.getAuthorizeUrl(oauthToken));  
      }  
    });  
  };  

  var oauth_callback = function(req, res) {  
    var client = new Evernote.Client({  
        consumerKey: config.consumerKey,  
        consumerSecret: config.consumerSecret,  
        sandbox: config.sandbox,  
        china: config.china,  
    });  

    client.getAccessToken(  
      req.session.oauthToken,   
      req.session.oauthTokenSecret,   
      req.query.oauth_verifier,  
      function(error, oauthAccessToken, oauthAccessTokenSecret, results) {  
        if (error) {  
          console.log('error');  
          console.log(error);  
          res.redirect('/');  
        } else {  

          req.session.oauthAccessToken = oauthAccessToken;  
          //req.session.oauthAccessTokenSecret = oauthAccessTokenSecret;  
          //req.session.edamShard = results.edam_shard;  
          //req.session.edamUserId = results.edam_userId;  
          //req.session.edamExpires = results.edam_expires;  
          //req.session.edamNoteStoreUrl = results.edam_noteStoreUrl;  
          //req.session.edamWebApiUrlPrefix = results.edam_webApiUrlPrefix;  

          console.log("oauthAccessToken:"+oauthAccessToken)  
          res.redirect('/');  
        }  
    });  
  };  

app.get('/', index);  
app.get('/oauth', oauth);  
app.get('/oauth_callback', oauth_callback);  

app.listen(3000 , function() {  
    console.log('Elistening");  
  });  
var client = new Evernote.Client(token: oauthAccessToken);// さっき手に入れたもの  
var noteStore = client.getNoteStore();  
noteStore.listNotebooks().then(function(notebooks) {  
  // hogehoge  
});  
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

勉強めも

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう