[SMS]2段階認証SMSをLINEに通知しよう

SMSLINE

どうも。つじけ(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 - Device Automation - Apps on Google Play
Number one automation app for Android - Over 10 million Downloads.

MacroDroidは、スマホ上で起きるさまざまなイベントをトリガー(きっかけ)として、アクションを実行できるアプリです。

一連の流れは、マクロとして、MacroDroidに保存できます。(無料枠で5つまで)

対象機能
トリガーアプリアプリを起動/終了
アプリのインストール/アンインストール/更新
センサー光センサー
機体本体をシェイク
画面の向きセンサー
バッテリー/電源バッテリー残量の変化
バッテリー温度
機器の動作ロック画面の解除
通知
電話/SMSSMSの受信
電話の着信時
不在着信時
日時やアラームカレンダーの予定
指定日(複数可)の時刻
アクションアプリ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アプリを作成しよう」をお届けします。

参考資料

MacroDroid 「変数」「連想配列」「マジックテキスト」とは?

タイトルとURLをコピーしました