{
    "componentChunkName": "component---src-templates-blog-post-jsx",
    "path": "/post/how-to-treat-pocket-api-with-js/",
    "result": {"data":{"site":{"siteMetadata":{"title":"WEB EGG","author":"Leko - CTO at Yuimedi"}},"markdownRemark":{"id":"b3f5cb63-ad80-554f-a6a6-f30dff700ac3","excerpt":"こんにちは。 最近は湿度が高いですね。くせ毛持ちにはつらい毎日です。 今回は、 「あとで読む」サービスのPocketのAPIを扱えるようにして、 TwitterとかからPocketを操作できるものを作ろうと思い立ったので、調べてみました。 あと、Nodejs…","html":"<p>こんにちは。<br>\n最近は湿度が高いですね。くせ毛持ちにはつらい毎日です。</p>\n<p>今回は、<br>\n「あとで読む」サービスのPocketのAPIを扱えるようにして、<br>\nTwitterとかからPocketを操作できるものを作ろうと思い立ったので、調べてみました。</p>\n<p>あと、Nodejsの記事が少ないなーと思ったので、<br>\n少しでも情報源を増やそうと思い、今回は<strong>Nodejs</strong>で実装していきます。</p>\n<p>あくまで個人用の用途を想定しているので、<br>\nどっかの誰かに認証して使ってもらうサービスで使う場合は、今回の記事の対象外となります。</p>\n<!--more-->\n<h2 id=\"pocketのアプリを登録\" style=\"position:relative;\"><a href=\"#pocket%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E7%99%BB%E9%8C%B2\" aria-label=\"pocketのアプリを登録 permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Pocketのアプリを登録</h2>\n<p>まず、PocketのAPIを利用するには、Pocketにアプリケーションを登録しないといけません。<br>\nというわけで早速登録していきます。</p>\n<ol>\n<li><a href=\"http://getpocket.com/developer/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Pocketのデベロッパーサイト</a> に行く</li>\n<li>いつも使っているPocketのIDでログインする</li>\n<li>左側のメニューの<code>APPS</code>><code>Create a New App</code>を選択</li>\n</ol>\n<p>すると、このような画面になると思うので、画像の説明の通り入力していきます。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/d46535e6460f1fce23e390c20757069e/0a47e/Create-a-New-App1.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 80.23952095808383%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'321\\'%20viewBox=\\'0%200%20400%20321\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M123%207c-1%201%200%2010%201%2010l1-1h1l7%201c6%200%206%200%206-3l1-2v2l1%203c1%200%202-1%202-4-1-5-2-6-3-4l-7%201-7%201h-1V9l-2-2M59%209c-1%201-2%202-4%201l-3%201v2l-1-1c-1-2-2-2-4-2-4%201-4%206%200%207%204%200%204-2%201-2-2-1-2-1%200-1l4%202%203%201c3%200%203%200%203-3s0-3%201-1c0%203%203%205%204%203h7l-2-1c-2-1-2-1%200-1%203%200%204-1%202-3s-6-1-7%202l-1%202V9h-3m165%2029h-7v11h4l4-1h3l-1-1v-8l-2-1h-1M48%2043c0%202%200%203%201%202h1c2%202%208%201%208-1l1-2v2c0%202%201%202%204%202l5-1h2l1-1c0%203%202%202%202%200s-3-4-4-2h-2l-2-1H55l-5%201c0%201-1%201-1-1-1-2-1-2-1%202m61%206l-9%203-2%201h-1c-2-2-5%200-5%204%200%201-1%202-32%202H29v15h309V59H221l-117-1c0-2%205-3%2010-3%204%200%205%200%205-2l-2-1c-6%200-7%200-3-2l3-4c0-1-1-1-8%203M30%2067v6h307V60H220a2627%202627%200%2000-116%203c0%201-15%203-16%202l1-2%201-3H30v7m119%2021h-5v6c0%204%200%204%203%204l3-2%201%201c2%201%204%201%204-1h-1l-1-1%201-2%201-4c-1-3-1-3-2-2-2%202-2%202-3%200-1-1-1-1-1%201m83-1c-2%201-2%207-1%208v1c-1%202%205%202%207%201h3v-5c1-4-2-7-4-4h-1c0-1-2-2-4-1M48%2093l1%203h1c1%202%207%201%208-1s1-2%201%200c1%202%201%202%203%201h6l2-2h1c0%203%202%202%202%200%200-3-2-3-3-2-2%202-2%202-3%200h-4c0-2%200-2-2-1h-6l-5%201-1-1c-1-1-1%200-1%202m28%201c0%203%201%204%204%202h11c2%201%205%200%205-2s2-1%202%201c1%201%201%200%201-2s0-3-1-2l-3%201H83c-1%201-2%200-2-1-2-3-5-1-5%203m61%205l-5%203-2%202-1%201v-2h-1c-2%200-3%202-1%202l-2%202c-3%202-3%202-4%201-1-2-1-3%201-2v-1h1c2%200%202%200%201-1-2-2-5-2-5%200h-2c-1-2-3-2-3%201l1%201c3-1%203%201%200%208-5%2010-5%2010%207%207%208-2%2010-3%207-4s-3-2%202-7c6-6%208-7%208-6l2%201%203-1-3-1c-3%200-3-1%200-3%205-5%201-5-4-1m98%2043l-1%203v5c0%204%205%204%205%200l1-2v2c0%206%205%202%205-4%200-4%200-4-4-4h-6m-111%203c0%203-2%207-3%206l-11%204-14%205-4%202h-1c1-2%200-2-1-2l-2%202%201%201h1c1%201-6%204-10%204l-5%202h-1c1-1%200-2-1-3-2-2-2-2-3%200l-3%202-1%201h-2l1%202-1%203-8%2012h14l13-1-2-3-2-2%206-4%208-5%202-1h5c2%201%205-1%203-2h-4c0-2%205-4%208-4l3-1%201-1%201-1v-1l4-3%207-3v-1l1-2h3c1-1%202-4%200-3l-1-2c1-2%200-3-1-3l-1%202m-74%205v4h10c8%200%209-1%209-2%200-2%200-2%201%200s1%202%202%201l1-1c0%201%201%202%203%202s3-1%200-2l-1-2c1-1-2-1-6-1l-7-1c0-2-2-1-2%201%200%201%200%202-1%201l-2-1-1%201h-1l-2-1c-1%201-2%200-2-1-1-1-1%200-1%202m257%2083v10h10v-6c0-5%200-5-3-5l-4-1-3%202m-206%2019c-9%204-9%205-8%203l-1-1-1%201-2%201v-2c-3-1-3-1-3%201l1%202h2c0%201-6%204-9%204l-2-2v-3l1%201h3c2%200%202%200%201-1%200-1-1-2-5-2-5%201-8%203-4%203l3%201-3%202-2%203-4%207c-5%209-5%209%2010%207%2012-2%2012-2%209-4l-2-3%204-3c2-3%204-4%205-3%200%201%201%201%202-1h2l2%201%201-1h1c1%201%201%201%201-1%200-1%200-2-1-1h-4c-3%201-2-1%202-3l11-10c0-2-3-1-10%204\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/d46535e6460f1fce23e390c20757069e/5251b/Create-a-New-App1.webp 167w,\n/static/d46535e6460f1fce23e390c20757069e/7390e/Create-a-New-App1.webp 334w,\n/static/d46535e6460f1fce23e390c20757069e/e88ff/Create-a-New-App1.webp 600w\"\n              sizes=\"(max-width: 600px) 100vw, 600px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/d46535e6460f1fce23e390c20757069e/21521/Create-a-New-App1.png 167w,\n/static/d46535e6460f1fce23e390c20757069e/86d36/Create-a-New-App1.png 334w,\n/static/d46535e6460f1fce23e390c20757069e/0a47e/Create-a-New-App1.png 600w\"\n            sizes=\"(max-width: 600px) 100vw, 600px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/d46535e6460f1fce23e390c20757069e/0a47e/Create-a-New-App1.png\"\n            alt=\"Creat\"\n            title=\"Creat\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>日本語に対応していないようで、日本語でアプリ名を入れたら文字化けしました。<br>\nなので、動作に影響はないと思うけど、半角英数のみで打っておいたほうが無難だと思います。</p>\n<p>パーミッションは、自分用なので全部要求するようにしちゃいましょう。<br>\n<strong>パーミッションは後で足りなくなっても、編集できません</strong>。</p>\n<p>アプリケーションを登録したら、<br>\n左側のメニューの<code>APPS</code>><code>My Apps</code>に行き、今作ったアプリを選択します。</p>\n<p>すると、上記のような感じに詳細情報が表示されます。 まず、パーミッションを確認します。<br>\n<code>Add</code>・<code>Modify</code>・<code>Retrieve</code>の３つが表示されていればOKです。</p>\n<p>次に、<code>URL</code>を設定します。<br>\nこのURLは、出来れば自分のページ（存在するページならどこでも）のURLを指定して下さい。<br>\nここで設定したURLは、後々の説明で<strong>リダイレクトURL</strong>と出てきます。<br>\nメモっておいて下さい。</p>\n<p>最後に、アクセストークンを取得するために必要な、<br>\n<strong>CONSUMEY KEY</strong>というのもメモっておいて下さい。</p>\n<h2 id=\"pocketからアクセストークンを取得する\" style=\"position:relative;\"><a href=\"#pocket%E3%81%8B%E3%82%89%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B\" aria-label=\"pocketからアクセストークンを取得する permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Pocketからアクセストークンを取得する</h2>\n<p><strong>APIを利用するには、今メモったCONSUMER KEYと、アクセストークンが必要です。</strong><br>\nアクセストークンを取得するためには、CONSUMER KEYが必要です。<br>\nでは、早速取得していきます。</p>\n<p>もしサービスにするなら、ごにょごにょとプログラムを書かないと行けないのですが、<br>\n今回は個人用なので、もっと簡単な方法でアクセストークンを入手します。</p>\n<p>各種HTTPメソッドやURLパラメータをGUIから設定して送信できる<br>\n<a href=\"https://itunes.apple.com/jp/app/fetcher/id440113616?mt=12\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Fetcher</a>というアプリを使用していきます。</p>\n<p>ちなみに、アクセストークンの取得についての公式ドキュメント(英語)はこちらです。<br>\nすでにアプリケーションを登録してCONSUMER KEYを取得済みなので、公式を参考に進める場合はStep2からになります。</p>\n<blockquote>\n<p><a href=\"http://getpocket.com/developer/docs/authentication\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Pocket Developer Program: Pocket Authentication API: Documentation</a></p>\n</blockquote>\n<h3 id=\"1-リクエストトークンを取得\" style=\"position:relative;\"><a href=\"#1-%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%82%92%E5%8F%96%E5%BE%97\" aria-label=\"1 リクエストトークンを取得 permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. リクエストトークンを取得</h3>\n<p>まず、アプリの認証をするための<strong>リクエストトークン</strong>というものを取得します。</p>\n<p>アクセスすべきURLは、“です。<br>\n使うHTTPメソッドは<code>POST</code>、必要なパラメータは、</p>\n<ul>\n<li>consumer_key\n<ul>\n<li>アプリを登録した際に設定したCONSUMER KEY</li>\n</ul>\n</li>\n<li>redirect_uri\n<ul>\n<li>アプリを登録した際に設定したリダイレクトURL(パラメータはur<strong>i</strong>なので注意)</li>\n</ul>\n</li>\n</ul>\n<p>の２つです。</p>\n<p>あと、ヘッダーに<br>\n<code>Content-Type=application/x-www-form-urlencoded</code>を指定してあげます。<br>\nこれらを合わせると、</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/50fa1a43511083da69b16e4217a6b5b4/0a47e/8223fde78c3ee79b98e79042f1607e04.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 42.51497005988024%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'170\\'%20viewBox=\\'0%200%20400%20170\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M50%2014v3h-6c-5%200-6%200-6%202%201%201%205%202%2073%202s72-1%2073-2c0-2-1-2-11-2h-11v-3l-1-3v2h-1l-1-1h-1c-2-1-3%200-3%202l2%201%204%201-41%201a337%20337%200%2001-37-2l3-2c2-2%202-2-3-2-5%201-6%201-6%203%200%203-1%203-4%203s-4%200-3-1l1-1%202-1h2c1%201%201%201%201-1s-2-2-5-1h-1l-1%201h-1v-2l-1%204c0%202-1%202-8%202l-8-1%201-1%201-2h-2v-2l-1%203M35%2037c-1%203%202%203%2026%203s25-1%2025-2c0-2-1-3-25-3-22%200-25%200-26%202m161%2024c-2%203%202%203%2058%203s57%200%2057-2-1-2-57-2l-58%201M3%2062c-2%203%201%203%2024%203%2022%200%2023%200%2023-2s-1-2-23-2L3%2062m27%2056c-1%201%201%202%204%202h2l-17%201-17%201v4l1%203h1l9%201c7%200%208-1%208-2%200-2%201-2%203-2s3%200%202%201h-1l-1%202h5l1-2%209-1c10%200%2013-1%2011-4l-7-1-6-1c0-2-3-3-5-2h-2M2%20134c0%201%202%202%2019%202%2018%200%2019%200%2019-2s-1-2-19-2-19%200-19%202\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/50fa1a43511083da69b16e4217a6b5b4/5251b/8223fde78c3ee79b98e79042f1607e04.webp 167w,\n/static/50fa1a43511083da69b16e4217a6b5b4/7390e/8223fde78c3ee79b98e79042f1607e04.webp 334w,\n/static/50fa1a43511083da69b16e4217a6b5b4/e88ff/8223fde78c3ee79b98e79042f1607e04.webp 600w\"\n              sizes=\"(max-width: 600px) 100vw, 600px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/50fa1a43511083da69b16e4217a6b5b4/21521/8223fde78c3ee79b98e79042f1607e04.png 167w,\n/static/50fa1a43511083da69b16e4217a6b5b4/86d36/8223fde78c3ee79b98e79042f1607e04.png 334w,\n/static/50fa1a43511083da69b16e4217a6b5b4/0a47e/8223fde78c3ee79b98e79042f1607e04.png 600w\"\n            sizes=\"(max-width: 600px) 100vw, 600px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/50fa1a43511083da69b16e4217a6b5b4/0a47e/8223fde78c3ee79b98e79042f1607e04.png\"\n            alt=\"リクエストトークンを取得\"\n            title=\"リクエストトークンを取得\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>こんな感じになると思います。<br>\nFetchを押してみると、以下の様なレスポンスが帰ってくると思います。</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">HTTP/1.1 200 OK\n———————————REQUEST————————————–\nContent-Type = application/x-www-form-urlencoded Accept-Encoding = gzip\nContent-Length = 77\nUser-Agent = Fetcher 1.4 (Macintosh; Mac OS X 10.8.4; ja_US)\n———————————RESPONSE————————————\nServer = Apache/2.2.23 (Amazon) Status = 200 OK\nContent-Type = application/x-www-form-urlencoded\nX-Powered-By = PHP/5.3.20\nX-Source = Pocket P3P = policyref=\"/w3c/p3p.xml\", CP=\"ALL CURa ADMa DEVa OUR IND UNI COM NAV INT STA PRE\"\nDate = Tue, 06 Aug 2013 11:23:38 GMT\nContent-Length = 35\nCache-Control = private\nConnection = keep-alive\n\ncode=XXXXXXXXXXXXXXXXXXX</code></pre></div>\n<p>一番下の行の、code=XXXXXXXXXXXXの部分を使います。<br>\nXXXXXXXX…としていますが、実際には英語と数字とハイフン混じりの文字列になっていると思います。<br>\n<strong>このXXXXXXX…の部分が、リクエストトークンです</strong>。</p>\n<h3 id=\"2-pocketの認証画面へ移動\" style=\"position:relative;\"><a href=\"#2-pocket%E3%81%AE%E8%AA%8D%E8%A8%BC%E7%94%BB%E9%9D%A2%E3%81%B8%E7%A7%BB%E5%8B%95\" aria-label=\"2 pocketの認証画面へ移動 permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. Pocketの認証画面へ移動</h3>\n<p>今取得したリクエストトークンを使って、アプリの認証画面へ移動します。</p>\n<p>今回はFetcherではなくブラウザを使います。<br>\nブラウザのアドレスバーに、 <a href=\"https://getpocket.com/auth/authorize?request_token=\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://getpocket.com/auth/authorize?request_token=</a></p>\n<p><strong>YOUR_REQUEST_TOKEN</strong>&#x26;redirect_uri=<strong>YOUR_REDIRECT_URI</strong></p>\n<p>と入力して下さい。 <strong>YOUR_REQUEST_TOKEN</strong>のところには、先ほど取得したリクエストトークンを、<br>\n<strong>YOUR_REDIRECT_URI</strong>のところには、先ほど設定したリダイレクトURLを入れます。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/28f42ce2249526efe760383f59961346/0a47e/f91ab41bde5ae5e886c1a19bbcfd53ca.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 44.91017964071857%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'179\\'%20viewBox=\\'0%200%20400%20179\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M37%2033l-1%209c0%2010%200%2010%2010%2010%209%200%2010-1%2010-10s-1-10-10-10l-9%201m24%2040l-6%201-5%201c0%202%200%202%2012%202l15-1h1l1%201c2-2%200-4-4-4H61m236%2038v6l1%205h51l1-2v-9l-26-1-27%201m-33%2025v1l-1%201%2032%201c31%200%2032%200%2032-2s-7-3-9-1h-1l-1%201-1%201-1-2c1-1%200-1-9-1s-13%200-11%202l-1%201-1-1-1-2-2%202-1%201-1-1-2-2c-2%200-3%201-3%202l-1%201-1-1-2-2-2%202-1%201-1-2-4-1h-4l-1-1-1%202\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/28f42ce2249526efe760383f59961346/5251b/f91ab41bde5ae5e886c1a19bbcfd53ca.webp 167w,\n/static/28f42ce2249526efe760383f59961346/7390e/f91ab41bde5ae5e886c1a19bbcfd53ca.webp 334w,\n/static/28f42ce2249526efe760383f59961346/e88ff/f91ab41bde5ae5e886c1a19bbcfd53ca.webp 600w\"\n              sizes=\"(max-width: 600px) 100vw, 600px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/28f42ce2249526efe760383f59961346/21521/f91ab41bde5ae5e886c1a19bbcfd53ca.png 167w,\n/static/28f42ce2249526efe760383f59961346/86d36/f91ab41bde5ae5e886c1a19bbcfd53ca.png 334w,\n/static/28f42ce2249526efe760383f59961346/0a47e/f91ab41bde5ae5e886c1a19bbcfd53ca.png 600w\"\n            sizes=\"(max-width: 600px) 100vw, 600px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/28f42ce2249526efe760383f59961346/0a47e/f91ab41bde5ae5e886c1a19bbcfd53ca.png\"\n            alt=\"こんな画面\"\n            title=\"こんな画面\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>上記のURLにブラウザからアクセスすると、こんな画面になるので、<br>\n<code>Authorize</code>をクリックします。</p>\n<p>これで認証完了です。</p>\n<h3 id=\"3-アクセストークンを取得\" style=\"position:relative;\"><a href=\"#3-%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%82%92%E5%8F%96%E5%BE%97\" aria-label=\"3 アクセストークンを取得 permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. アクセストークンを取得</h3>\n<p>やっとアクセストークンです。</p>\n<p>認証が完了したら、<br>\n<strong>先ほどのリクエストトークンと、CONSUMER KEYを利用して、アクセストークンを取得</strong>します。</p>\n<p>アクセスするURLは “<br>\nHTTPメソッドは<code>POST</code><br>\nパラメータは、</p>\n<ul>\n<li>consumer_key\n<ul>\n<li>アプリケーションのCONSUMER KEY</li>\n</ul>\n</li>\n<li>code\n<ul>\n<li>先ほど取得したリクエストトークン</li>\n</ul>\n</li>\n</ul>\n<p>これをFetcherに入れるとこんなかんじになります。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/8de9e877c96acf1dbc4a5ca2571092ec/0a47e/access_token.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 43.113772455089816%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'172\\'%20viewBox=\\'0%200%20400%20172\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M38%2012v6h13l-6-1h-6V7h157l156%201%201%203c1%202%201%202%201-1V7L196%206H38v6m319-5v6l1%205h33V7l-17-1-17%201m1%201v5l1%204h31V8l-16-1-16%201M89%2010l-23%201c0-2-2-1-2%202-1%203%200%204%201%201l1-2v2c1%203%203%204%204%201h1l6%201a1704%201704%200%200121-3c1-2%200-2-4-2-3%201-4%200-4-1h-1m34%200v1l1%202-1%201-1-1-1-1-2-1c-2-2-3-1-3%201s0%202-1%201c-1-2-10-2-11%200l-1%201v-3l-3%204h9l1-1h4c2%203%203%202%203%200s0-2%201-1l3%202h24c1-2%202-2%202-1%201%201%201%201%201-1l-1-2c-3-1-7%200-7%202h-1l-1-2v2h-1c0-2-6-2-7-1h-1c0-1%200-2-1-1l-1%202c0%202%200%202-1%201v-2l-1-2h-2m38%201h-2l-1%202-1%202v-4l-1%202h-1l-1-2-2%204c1%201%2011%200%2012-1h1l1%201h5l2-2h1c0%203%209%204%209%200%200-1-1-2-4-2l-3%201v1c-1%201-1%200-1-1s0-2-1-1h-4l-3%201h-2c-1-2-2-2-4-1M58%2025H38v11h25a200%20200%200%200020-1h-5v-9h4c4%200%205%201%205%204%200%205%201%205%201%200%200-4-2-6-7-6l-23%201m-19%206v4h38v-9H39v5M0%2045v4h200c110%200%20154-1%2098-1H196v-3c0-4%200-4%205-4l-98-1H0v5m209%208l-5%201c-5-1-7%201-6%203%201%201%2028%200%2029-1l2%201h2l1-2%201%201v1l2-1-1-2-2-1c-2%200-2%200-2%202h-1l-9-2h-11m46%200l-8%201c-9%200-14%201-8%202l11%201h9l2-1h2l4%201h5c1%201%205%200%205-1h1c1%201%204%202%205%201l3-1c0%201%204%202%209%202%207%200%208-1%208-3%200-1%200-2-14-1l-15%201h-1l-3-1c-8%200-13%200-12-1l-1-1-2%201m117%2043v6h21V91l-1%205v5h-9V91h5l-6-1h-10v6M97%20106h98v9h205v-10H200c-110%200-157%201-103%201m124%2014c0%204%200%204%208%204%201%200%202%201%202%203s0%202-3%202l-3%201a719%20719%200%200065-1c-3%200-3%200-3-2%200-3%200-3%204-3%205%200%206-2%206-7l-38-1h-38v4m38%202l-2%202c-2%200-3%201-3%202%200%203%200%203%2012%203%2011%200%2012-1%2012-2%200-2-1-2-8-2s-7%200-7-3l-2-2-2%202m113%2040v6l1-6v-5h4l5%201-1%204c0%206%201%206%208%206%203%200%204-1%204-6v-6h-21v6m-272%2010\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/8de9e877c96acf1dbc4a5ca2571092ec/5251b/access_token.webp 167w,\n/static/8de9e877c96acf1dbc4a5ca2571092ec/7390e/access_token.webp 334w,\n/static/8de9e877c96acf1dbc4a5ca2571092ec/e88ff/access_token.webp 600w\"\n              sizes=\"(max-width: 600px) 100vw, 600px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/8de9e877c96acf1dbc4a5ca2571092ec/21521/access_token.png 167w,\n/static/8de9e877c96acf1dbc4a5ca2571092ec/86d36/access_token.png 334w,\n/static/8de9e877c96acf1dbc4a5ca2571092ec/0a47e/access_token.png 600w\"\n            sizes=\"(max-width: 600px) 100vw, 600px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/8de9e877c96acf1dbc4a5ca2571092ec/0a47e/access_token.png\"\n            alt=\"Acces\"\n            title=\"Acces\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>上記内容でFetchボタンを押すと、</p>\n<p><code>access_token=XXXXXXXXXXXXXXXXXXXXXX&#x26;username=...</code></p>\n<p>というレスポンスが帰ってきていると思います。 この<code>access_token=</code>以降のXXXの部分をメモっておいて下さい。</p>\n<p>これで、必要な処理は完了です。</p>\n<h2 id=\"pocketapiを試してみる\" style=\"position:relative;\"><a href=\"#pocketapi%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B\" aria-label=\"pocketapiを試してみる permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>PocketAPIを試してみる</h2>\n<p>APIの仕様についてはドキュメントを見ればわかるので、とりあえず使うだけ使ってみます。</p>\n<p>APIの公式ドキュメントはこちら。</p>\n<blockquote>\n<p><a href=\"http://getpocket.com/developer/docs/overview\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Pocket Developer Program: Pocket API Documentation</a></p>\n</blockquote>\n<p>自分がPocketに<strong>保存した最新１件の記事を取得して、<br>\nその記事のタイトルとURLを表示</strong>してみましょう。</p>\n<p>ソースはこんな感じになると思います。</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">global<span class=\"token punctuation\">,</span> <span class=\"token keyword\">undefined</span></span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token string\">\"use strict\"</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">var</span> https <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"https\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n      endpoint <span class=\"token operator\">=</span> <span class=\"token string\">\"https://getpocket.com/v3/get\"</span><span class=\"token punctuation\">,</span>\n      param <span class=\"token operator\">=</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">;</span>\n\n  param <span class=\"token operator\">+=</span> <span class=\"token string\">\"consumer_key=YOUR_CONSUMER_KEY\"</span><span class=\"token punctuation\">;</span>\n  param <span class=\"token operator\">+=</span> <span class=\"token string\">\"&amp;access_token=YOUR_ACCESS_TOKEN\"</span><span class=\"token punctuation\">;</span>\n  param <span class=\"token operator\">+=</span> <span class=\"token string\">\"&amp;sort=newest\"</span><span class=\"token punctuation\">;</span>\n  param <span class=\"token operator\">+=</span> <span class=\"token string\">\"&amp;count=1\"</span><span class=\"token punctuation\">;</span>\n\n  https<span class=\"token punctuation\">.</span><span class=\"token function\">get</span><span class=\"token punctuation\">(</span>endpoint <span class=\"token operator\">+</span> <span class=\"token string\">\"?\"</span> <span class=\"token operator\">+</span> <span class=\"token function\">serialize</span><span class=\"token punctuation\">(</span>param<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">res</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">var</span> response <span class=\"token operator\">=</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">// データを受信したら</span>\n    res<span class=\"token punctuation\">.</span><span class=\"token function\">on</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"data\"</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">buff</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      response <span class=\"token operator\">+=</span> buff<span class=\"token punctuation\">.</span><span class=\"token function\">toString</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">// データの受信が完了したら</span>\n    res<span class=\"token punctuation\">.</span><span class=\"token function\">on</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"end\"</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token keyword\">var</span> json <span class=\"token operator\">=</span> <span class=\"token constant\">JSON</span><span class=\"token punctuation\">.</span><span class=\"token function\">parse</span><span class=\"token punctuation\">(</span>response<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n          p<span class=\"token punctuation\">;</span>\n      <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span>p <span class=\"token keyword\">in</span> json<span class=\"token punctuation\">.</span>list<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">var</span> item <span class=\"token operator\">=</span> json<span class=\"token punctuation\">.</span>list<span class=\"token punctuation\">[</span>p<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n            title <span class=\"token operator\">=</span> item<span class=\"token punctuation\">.</span>resolved_title<span class=\"token punctuation\">,</span>\n            url <span class=\"token operator\">=</span> item<span class=\"token punctuation\">.</span>resolved_url<span class=\"token punctuation\">;</span>\n        console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>title <span class=\"token operator\">+</span> <span class=\"token string\">\"n\"</span> <span class=\"token operator\">+</span> url <span class=\"token operator\">+</span> <span class=\"token string\">\"n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>これを実行してみると、こんな表示がされると思います。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 548px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/5420002cc0b23f2d014bf58906abe03a/a58fe/aa4012ad6bc2891b4a3bdc99d8ae9c41.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 10.179640718562874%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'42\\'%20viewBox=\\'0%200%20400%2042\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M0%2021v21h401V0H0v21M14%206c-3%200-3%201-3%203%200%201%200%202%207%202h14c3%200%204-1%204-3l-2-2H14m72%201c-1%203%201%204%2012%204h10V6H97c-7-1-10%200-11%201m180%2021l-1%203h-1c0-1-2-2-9-2-10%200-10%200-10%203%200%202%202%203%202%200h1c1%202%2026%203%2027%201h1l2%201%202-2-1-2v-1c1-1%201-1-1-1l-2%202h-1c0-2-4-3-4%200l-2-1c-1-2-2-2-3-1\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/5420002cc0b23f2d014bf58906abe03a/5251b/aa4012ad6bc2891b4a3bdc99d8ae9c41.webp 167w,\n/static/5420002cc0b23f2d014bf58906abe03a/7390e/aa4012ad6bc2891b4a3bdc99d8ae9c41.webp 334w,\n/static/5420002cc0b23f2d014bf58906abe03a/01940/aa4012ad6bc2891b4a3bdc99d8ae9c41.webp 548w\"\n              sizes=\"(max-width: 548px) 100vw, 548px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/5420002cc0b23f2d014bf58906abe03a/21521/aa4012ad6bc2891b4a3bdc99d8ae9c41.png 167w,\n/static/5420002cc0b23f2d014bf58906abe03a/86d36/aa4012ad6bc2891b4a3bdc99d8ae9c41.png 334w,\n/static/5420002cc0b23f2d014bf58906abe03a/a58fe/aa4012ad6bc2891b4a3bdc99d8ae9c41.png 548w\"\n            sizes=\"(max-width: 548px) 100vw, 548px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/5420002cc0b23f2d014bf58906abe03a/a58fe/aa4012ad6bc2891b4a3bdc99d8ae9c41.png\"\n            alt=\"Pocketから取得した結果\"\n            title=\"Pocketから取得した結果\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>Nodejsでの通信は割と<strong>お手軽ではない</strong>のですが、上記のように書いて通信出来ます。</p>\n<h2 id=\"apiクライアントの実装\" style=\"position:relative;\"><a href=\"#api%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E3%81%AE%E5%AE%9F%E8%A3%85\" aria-label=\"apiクライアントの実装 permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>APIクライアントの実装</h2>\n<p>上の例でとりあえずの通信は出来るのですが、上のままだとかなり使いにくいと思います。</p>\n<p>ということで、PocketのAPIクライアントを書いてみました。</p>\n<blockquote>\n<p><a href=\"https://gist.github.com/Leko/6164739\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">nodejs-pocket.js</a></p>\n</blockquote>\n<p>アクセストークンは何らかの手段で取得済みという前提**（アクセストークンを取得する周りの処理は一切なし）**<br>\nの実装なので汎用性はあまりないと思いますが、</p>\n<p>自分のPocketのデータを操作したい場合などに、ご活用いただけたらなーと思います。</p>\n<p>使い方は、<br>\n上記のnodejs-pocket.jsをダウンロードした上で、下記のように使ってもらえます。 requireのパスは適宜変えて下さい。</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">var</span> Pocket <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"./nodejs-pocket.js\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    pocket <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Pocket</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n        consumer_key<span class=\"token operator\">:</span> <span class=\"token string\">\"あなたのconsumer_key\"</span><span class=\"token punctuation\">,</span>\n        access_token<span class=\"token operator\">:</span> <span class=\"token string\">\"あなたのaccess_token\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// Pocketから取得</span>\n<span class=\"token keyword\">var</span> opt <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n    sort<span class=\"token operator\">:</span> <span class=\"token string\">\"newest\"</span><span class=\"token punctuation\">,</span>\n    count<span class=\"token operator\">:</span> <span class=\"token number\">10</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\npocket<span class=\"token punctuation\">.</span><span class=\"token function\">get</span><span class=\"token punctuation\">(</span>opt<span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">json</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// 記事の配列</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// Pocketされている記事の情報変更</span>\n<span class=\"token keyword\">var</span> opt <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n    actions<span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token string\">\"action\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"favorite\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"item_id\"</span><span class=\"token operator\">:</span> <span class=\"token number\">99999999</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">]</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\npocket<span class=\"token punctuation\">.</span><span class=\"token function\">modify</span><span class=\"token punctuation\">(</span>opt<span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">json</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// 送信したアクションを行った結果</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// Pocketに記事を追加</span>\n<span class=\"token keyword\">var</span> opt <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n    url<span class=\"token operator\">:</span> <span class=\"token string\">\"http://leko.jp\"</span><span class=\"token punctuation\">,</span>\n    title<span class=\"token operator\">:</span> <span class=\"token string\">\"うぇぶえっぐ\"</span><span class=\"token punctuation\">,</span>\n    tags<span class=\"token operator\">:</span> <span class=\"token string\">\"web,egg\"</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\npocket<span class=\"token punctuation\">.</span><span class=\"token function\">add</span><span class=\"token punctuation\">(</span>opt<span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">json</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// 記事をPocketに追加した結果</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>APIは、APIクライアント系のgem(Rubyだけど)によくある形に合わせてみたつもりですが、<br>\n改善点がございましたら、Gistの方にコメントいただけると嬉しいです。</p>","timeToRead":9,"frontmatter":{"title":"PocketのAPIをNodejsから扱う方法","tags":["Nodejs","Pocket"],"date":"August 06, 2013","featuredImage":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='179'%20viewBox='0%200%20400%20179'%20preserveAspectRatio='none'%3e%3cpath%20d='M37%2033l-1%209c0%2010%200%2010%2010%2010%209%200%2010-1%2010-10s-1-10-10-10l-9%201m24%2040l-6%201-5%201c0%202%200%202%2012%202l15-1h1l1%201c2-2%200-4-4-4H61m236%2038v6l1%205h51l1-2v-9l-26-1-27%201m-33%2025v1l-1%201%2032%201c31%200%2032%200%2032-2s-7-3-9-1h-1l-1%201-1%201-1-2c1-1%200-1-9-1s-13%200-11%202l-1%201-1-1-1-2-2%202-1%201-1-1-2-2c-2%200-3%201-3%202l-1%201-1-1-2-2-2%202-1%201-1-2-4-1h-4l-1-1-1%202'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":2.2416107382550337,"src":"/static/28f42ce2249526efe760383f59961346/2a4de/featured-image.png","srcSet":"/static/28f42ce2249526efe760383f59961346/1ec58/featured-image.png 334w,\n/static/28f42ce2249526efe760383f59961346/2a4de/featured-image.png 600w","srcWebp":"/static/28f42ce2249526efe760383f59961346/ad85c/featured-image.webp","srcSetWebp":"/static/28f42ce2249526efe760383f59961346/cd98f/featured-image.webp 334w,\n/static/28f42ce2249526efe760383f59961346/ad85c/featured-image.webp 600w","sizes":"(max-width: 600px) 100vw, 600px"}}}}}},"pageContext":{"slug":"/how-to-treat-pocket-api-with-js/","previous":{"fields":{"slug":"/try-clean-install-with-boxen/"},"frontmatter":{"title":"Macの容量が埋まってしまったのでboxenとクリーンインストールをしてみた","tags":["Boxen","Mac"]}},"next":{"fields":{"slug":"/how-to-fix-sublime-linter-in-japanese/"},"frontmatter":{"title":"MacのSublimeLinterで日本語エラーが出る症状を治す方法","tags":["Sublime Text2"]}}}},
    "staticQueryHashes": ["2585454260","2954598359"]}