12
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ElectronAdvent Calendar 2016

Day 14

electron-oauth-twitterでElectronでのTwitter OAuth認証を手軽に行う

Last updated at Posted at 2016-12-14

はじめに

※翌日の人とネタ被りしてしまったので、後日また別の記事を上げる予定です。

この記事はElectronアドベントカレンダー14日目の記事です。遅刻してしまってすみません><

現在開発中のElectronアプリ内で使っているNPMモジュールについて、まとめられたのでこれを14日目の記事とします。

ElectronでTwitterに投稿するタイプのアプリケーションを作る際、どうしてもOAuth認証の複雑さがネックになってきます。
認証後のコールバックURLの問題や、コールバックURLを指定しない場合はPINコードでの入力になる点などによって、どうしても複雑な処理になりがちです。

そこの欠点を解決してくれるelectron-oauth-twitterというパッケージになります。

electron-oauth-twitter

このパッケージは、Electronのプラグインとなり、たった数行のコードで、煩雑なTwitterのOAuth処理を全て行ってくれるものとなります。

Electronのウィンドウシステムを利用しているため、Electronに依存する形となりますが、その中では非常に重宝するのでご紹介いたします。

uraway/electron-oauth-twitter

導入

npm経由で使用します。

terminal
$ npm i -S electron-oauth-twitter

事前準備

スクリーンショット 2016-12-15 0.23.44.png

dev.twitter.comにアクセスし、My appsから新しくアプリケーションを登録し、コンシューマーキーおよびシークレットキーを取得しておきます。

利用方法

以下のように利用します。
なお、このコードはメインプロセス(非Chromium上)にて実行もしくは、Electronのremoteモジュールを経由して利用します。

oauth.js
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認証の画面が表示されます。

スクリーンショット 2016-12-14 23.12.32.png

いつものアカウント情報を入力し、ログインをすると、Electron側のモーダルが表示され、無事認証が完了となりました。
あとは、これをlocalStorageに入れるなどして永続化することで利用が可能となります。

実際にツイートするには

electron-oauth-twitterには、OAuth以外の機能はありませんので、別途twitterモジュールなどを利用してツイートなどの操作を行う必要があります。

desmondmorris/node-twitter

おわりに

electron-oauth-twitterを利用することで、非常に簡単にElectronアプリケーション内にTwitterのOAuth認証を埋め込むことができました。

既にあるWebサービスなどのクライアントでは自分のサービス内の認証があるため不要かもしれませんが、Twitterクライアントなど、Twitterに密接に紐づくツールの作成では非常に重宝するため、利用してみると良いかもしれません。

最後になりますが、Electron製のスクリーンキャプチャツールを現在開発中です。Retina環境のMacにも対応し、高画質の画像を2ステップでTwitterに投稿できる、いわばTwitter版のGyazoのようなものを開発しておりますので、完成した暁には、また内部の構造などをQiitaに書きたいと思います。

12
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?