どうも。つじけ(tsujikenzo)です。今日は単発で「2段階認証SMSをLINEに通知しよう」を、お送りします。
※トリガー「通知」では、動作が不安定で、トリガーをSMS受信に変更しました。本記事内のトリガーの説明部分を変更していただけると幸いです。マジックテキストは送信元番号が[sms_number]、本文が[sms_message]です。
はじめに
インターネットサービスにログインするとき、SMSの2段階認証を求めらることが多くなってきました。
SMSは、SMS送受信付きのSIMカードを持っていないと、利用できないので、セキュリティ対策として選ばれています。
しかしながら、複数の人が業務で使うサービスのログインなどで、SMSの2段階認証を求められると、端末を持っているひととの確認作業が発生してしまいます。
そこで、SMSの2段階認証が飛んでくると、LINEやSlackやChatworkなどの社内コミュニケーションツールに転送できるアプリを作成してみましょう。
事前準備
AndroidでSMSを受信できるスマホが1台必要です。
わたしは、SMSを送受信できる格安SIMを1枚契約していましたので、SIMフリーの2017年製のAndroidスマホ(3000円くらい)をハードオフで購入しました。
AndroidのOSが、7.0以上のものをオススメします。
MacroDroidインストール
Google Payから、MacroDroid(マクロドロイド)をインストールしましょう。無料です。
MacroDroidは、スマホ上で起きるさまざまなイベントをトリガー(きっかけ)として、アクションを実行できるアプリです。
一連の流れは、マクロとして、MacroDroidに保存できます。(無料枠で5つまで)
対象 | 機能 | |
---|---|---|
トリガー | アプリ | アプリを起動/終了 |
アプリのインストール/アンインストール/更新 | ||
センサー | 光センサー | |
機体本体をシェイク | ||
画面の向きセンサー | ||
バッテリー/電源 | バッテリー残量の変化 | |
バッテリー温度 | ||
機器の動作 | ロック画面の解除 | |
通知 | ||
電話/SMS | SMSの受信 | |
電話の着信時 | ||
不在着信時 | ||
日時やアラーム | カレンダーの予定 | |
指定日(複数可)の時刻 | ||
アクション | アプリ | HTTPリクエスト |
Webサイトを開く | ||
カメラ/写真 | スクリーンショットを撮る | |
写真を撮る | ||
ファイル | ファイルを開く | |
ファイルから読む | ||
ファイルへ書き込み | ||
メッセージ | SMSを送信 | |
Twitterで送信 | ||
メールを送る | ||
メディア | サウンドを再生/停止 | |
画面 | 画面のON/OFF | |
日時やアラーム | カレンダーの予定 | |
電話 | WhatsApp送信 |
今回は、「SMS受信の通知」が発生すると「HTTPリクエスト」を送信する、というマクロを作ります。
スマホの通知設定
AndroidのSMS受信アプリの通知設定をONにしましょう。SMS受信アプリは、わたしのスマホだと「SMS」という名前でした。「メッセージ」というばあいもあるかもしれません。
通知ONの設定は、割愛します。
別のスマホからSMSを送信して、通知がピョコっと表示されることを確認しましょう。
ウェブアプリをデプロイする
外部から呼び出されるウェブアプリを準備します。
GASのスクリプトエディタを準備して、このようなコードを書きます。
こちらは、公式LINEアカウントから一斉送信を行うプログラムです。
function doPost(e) {
const ACCESS_TOKEN = "チャネルアクセストークン";
const to = "チャネルID";
const message = {
type: 'text',
text: e.postData.contents
};
const options = {
'method': 'post',
'headers': {
'Content-Type': 'application/json',
'Authorization': `Bearer ${ACCESS_TOKEN}`
},
'payload': JSON.stringify({
to,
messages: [message]
})
};
UrlFetchApp.fetch('https://api.line.me/v2/bot/message/broadcast', options);
}
コードを保存したらデプロイします。
URLをコピーして、メモ帳などに貼り付けておきましょう。
LINEのチャネルアクセストークンの取得や、デプロイの流れは、こちらのブログを参考にしてください。
MacroDroidでマクロを作成する
MacroDroidを起動したら、「マクロを追加」をクリックします。
マクロ名を入力します。
トリガー追加
トリガーの[+]をクリックします。
「機器の動作」から「通知」をクリックします。
通知が表示された時にチェックが入っていることを確認して、「OK」をクリックします。
アプリの一覧が表示されたら「SMS」にチェックをいれて、「含む」にチェックが入っていることを確認して、「OK」をクリックします。
テキストコンテンツの指定はなしで、下部のチェックはすべて外して、最後に「OK」をクリックします。
これでトリガーが追加されました。
アクションの追加
アクションの[+]をクリックします。
「アプリ」から、「HTTPリクエスト」をクリックします。
「設定」タブの、リクエストメソッドの三角をクリックして、「POST」をクリックします。
先ほどメモ帳にコピーした、URLを入力します。(URLをGmailなどに送信して、スマホからGmailを開くとコピペできますね)
「コンテントボディ」タブの、コンテントタイプ(MIMEタイプ)の三角をクリックして、「tex/plain」をクリックします。
コンテントボディに、[not_title]から受信[notification]と入力します。
入力が完了したら、右上のチェックボタンをクリックします。
アクションが完成しました。
左上の矢印をクリックして、マクロを保存しましょう。
別のスマホから、ダミーのSMSを送信してみましょう。LINE通知が飛んでくれば完成です。
まとめ
以上で、「2段階認証SMSをLINEに通知しよう」をお届けしました。
HTTPリクエストでPOSTするということは、SlackやChatworkなど、さまざまなツールに転送できます。
また、IFTTTなどに連携して、さらにアクションを実行するということもできそうです。
逆に「SMSを送信する」となると、ハードルが高い気がします。。。もし時間があれば、「JavaでAndroidアプリを作成しよう」をお届けします。