14
11

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 3 years have passed since last update.

LINE Notifyの使い方(PHPコードを例に)

Last updated at Posted at 2019-08-04

※ 某案件でLINE Notifyを利用する必要があったのでテスト構築した際に調べたことを備忘録として保存.

LINE Notifyとは

  • LINE Notifyは,LINEの公式アカウント「LINE Notify」のこと.また,それを利用してユーザに通知を送る方法を指す.
  • 公式アカウントとの違いは,自ら作ったアカウントで情報発信するわけではなく,ユーザからは,LINEが管理しているアカウントから情報が届いているように見えるところ.

LINE Notifyを設定して通知が届くまで

サービス登録

  • このURLから所有するLINEアカウントでログイン.
  • 右上のアカウント名が書かれてあるメニューから「登録サービス管理」を選択.
LINE_Notify_Capture - 「登録サービス管理(サービス提供者向け)」のページに遷移するので,「サービスを登録する」からサービス登録. - [サービス名]は,通知に常に表示される. - それ以外の項目は,ユーザによる連携画面と,「連携済みサービス」一覧に表示される. - 「Callback URL」がいつ使われるのかについては後述. - メールアドレスの認証が必要なので,そこまで出来たら画面上の「Client ID」「Client Secret」をメモる

ユーザ連携

連携画面への遷移

  • 以下のURLをGET実行することでLINE Notifyの連携画面に遷移する.
https://notify-bot.line.me/oauth/authorize?response_type=code&client_id=[Client ID]&redirect_uri=[Callback URL]&scope=notify&state=[CSRF Token]&response_mode=form_post
  • ここで,Client IDはメモしたもの.
  • Callback URLはサービス登録画面で指定したもの.LINE Notifyの連携画面はLINE管理なので,そこから自サービスに戻ってくるときにどのURLに遷移させたいかを指定する.
  • CSRF TokenはCSRF対策のために用意するトークン.
  • response_modeは任意のパラメータで,form_postを指定することで連携後のCallback URLへのリクエストがPOSTになる.このパラメータを付けなければGETになる.

注:response_modeは任意だが,CSRF Token(stateパラメータ)は必須.

連携画面からのCallback

  • Callbackされる際に,Responseパラメータとしてcodeが含まれる.(これは一時code)
  • このcodeを受け取ったら,以下のようにPOSTでリクエストを投げる.(PHPの例)
$query = http_build_query([
    "grant_type" => "authorization_code",
    "code" => [Callback時に受け取ったcode],
    "redirect_uri" => [Callback URL],
    "client_id" => [Client ID],
    "client_secret" => [Client Secret]
]);

$header = [
    "Content-Type: application/x-www-form-urlencoded",
    'Content-Length: ' . strlen($query)
];

$url = "https://notify-bot.line.me/oauth/token";

$options = [
    CURLOPT_RETURNTRANSFER  => true,
    CURLOPT_POST            => true,
    CURLOPT_HEADER          => true,
    CURLOPT_HTTPHEADER      => $header,
    CURLOPT_POSTFIELDS      => $query
];

$ch = curl_init($url);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
  • 戻り値としてaccess_tokenを受け取れるので,保存しておく.

通知処理

  • 以下のような感じで通知可能.
$query = http_build_query([
    "message" => [通知したい内容]
]);

$header = [
    "Content-Type: application/x-www-form-urlencoded",
    'Authorization: Bearer ' . [access_token],
    'Content-Length: ' . strlen($query)
];

$url = "https://notify-api.line.me/api/notify";

$options = [
    CURLOPT_RETURNTRANSFER  => true,
    CURLOPT_POST            => true,
    CURLOPT_HEADER          => true,
    CURLOPT_HTTPHEADER      => $header,
    CURLOPT_POSTFIELDS      => $query
];

$ch = curl_init($url);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
  • 一通り確認したところ,改行とリンクの設置は可能.HTMLタグは使えないようだ.
  • 画像添付なども可能だけれど,自分の用途では必要なかったので試してはいない.

補足

  • 今回は通知のみ説明したが,他にも,access_tokenに紐づくユーザのstatusを表示したり,連携を解除するAPIが用意されている.
  • また,Response Header情報には,あと何回APIの利用が可能なのかや,そのカウントがいつリセットされるのかについての情報が含まれている.

参考資料

14
11
1

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
14
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?