はじめに
※翌日の人とネタ被りしてしまったので、後日また別の記事を上げる予定です。
この記事はElectronアドベントカレンダー14日目の記事です。遅刻してしまってすみません><
現在開発中のElectronアプリ内で使っているNPMモジュールについて、まとめられたのでこれを14日目の記事とします。
ElectronでTwitterに投稿するタイプのアプリケーションを作る際、どうしてもOAuth認証の複雑さがネックになってきます。
認証後のコールバックURLの問題や、コールバックURLを指定しない場合はPINコードでの入力になる点などによって、どうしても複雑な処理になりがちです。
そこの欠点を解決してくれるelectron-oauth-twitterというパッケージになります。
electron-oauth-twitter
このパッケージは、Electronのプラグインとなり、たった数行のコードで、煩雑なTwitterのOAuth処理を全て行ってくれるものとなります。
Electronのウィンドウシステムを利用しているため、Electronに依存する形となりますが、その中では非常に重宝するのでご紹介いたします。
導入
npm経由で使用します。
$ npm i -S electron-oauth-twitter
事前準備
dev.twitter.comにアクセスし、My appsから新しくアプリケーションを登録し、コンシューマーキーおよびシークレットキーを取得しておきます。
利用方法
以下のように利用します。
なお、このコードはメインプロセス(非Chromium上)にて実行もしくは、Electronのremoteモジュールを経由して利用します。
const dialog = require('electron').dialog;
const OauthTwitter = require('electron-oauth-twitter');
const twitter = new OauthTwitter({
key : "YOUR_TWITTER_KEY",
secret: "YOUR_TWITTER_SECRET",
});
twitter.startRequest()
.then((result) => {
dialog.showErrorBox('Status', 'Token: ' + result.oauth_access_token + '\nSecret: ' + result.oauth_access_token_secret);
}).catch((error) => {
console.error(error, error.stack);
});
実際実行すると、以下のように、TwitterのOAuth認証の画面が表示されます。
いつものアカウント情報を入力し、ログインをすると、Electron側のモーダルが表示され、無事認証が完了となりました。
あとは、これをlocalStorageに入れるなどして永続化することで利用が可能となります。
実際にツイートするには
electron-oauth-twitterには、OAuth以外の機能はありませんので、別途twitterモジュールなどを利用してツイートなどの操作を行う必要があります。
おわりに
electron-oauth-twitterを利用することで、非常に簡単にElectronアプリケーション内にTwitterのOAuth認証を埋め込むことができました。
既にあるWebサービスなどのクライアントでは自分のサービス内の認証があるため不要かもしれませんが、Twitterクライアントなど、Twitterに密接に紐づくツールの作成では非常に重宝するため、利用してみると良いかもしれません。
最後になりますが、Electron製のスクリーンキャプチャツールを現在開発中です。Retina環境のMacにも対応し、高画質の画像を2ステップでTwitterに投稿できる、いわばTwitter版のGyazoのようなものを開発しておりますので、完成した暁には、また内部の構造などをQiitaに書きたいと思います。