今年もLINE Developer Day 2017に行ってきました!!
本記事はLINE Loginについて新機能やその仕組などを解説するLINE Login – new features and mechanismのまとめになります!
LINE Login – new features and mechanism
御代田亮平様, 長谷部良輔様
LINE loginの現状
- OAuth2のプロトコルでログインされる
- LINE login自体は一般のdeveloperが使えるようになったのは2年前
- login platformが今年はv2になりました
- 開発向け機能として、認可リクエスト、それをつかってアクセストークンを用いたREST APIがあります
- プロフィールAPIを用いると、displayName, userId, pictureUrl, statusMessageの4つを取得できます
- パートナー向けにはEmail, 電話番号, 誰と友達か、ユーザーとユーザのメッセージAPI、LINE Pay, Line pointのAPIなどが使える
- 徐々に提供することも検討してます
- ユーザ向けの機能としてemailとpassを用いたログインと、自動ログインがある
- LINE内のwebviewで開いたりしてsafariなどのブラウザを開いて認証された状態でページを表示できたりする
- 新機能をすばやく開発しつつも、安全にスケーラブルにシステム開発を行っている
新機能
Login Session Enabled
- LINEログインを行っているブラウザごとに認証を管理できるようになった
- 今までは、セッション管理が行われていなかったので毎回ログインを求められていた
- LINEのプラットフォームからログイン管理が行われるようになるので、一回ログインすればその後、Id/passなしでログインした状態になる
- Active Sessions
- ログインしているデバイス、ブラウザごとに、どのセッションが有効かを管理できるようになります
- 使い方はhttps://access.line/me/oauth2/v2.1/authorizeにアクセスするだけ
OpenID Connectのサポート
- id_tokenの入手情報が増える
- token responseの中にもid_tokenが含まれるようになる
- 高いレベルの ユーザ情報はid_tokenのみで提供されます
ユーザとBOTを友達に
- マーケティングメッセージを送信できるため、emailをとれるplatformが魅力的と思われる
- しかしユーザはprivateな会話以外にもemailよりもチャットを好む
- 例えば同じメッセージをチャットとemailで送ったとして、比較するとチャット内のリンクのほうが4倍近いクリック率になる
- Login&Profile + Messaging APIを開発者がシームレスで使う機能が不足していた
- 新しいパラメータをセットすると自身のリストにBOTを表示できるようになる
- ユーザがBOTをブロックしていたらそれをunblockできるようにもなる
- bot_prompt=aggressiveにすると、認可の画面が大きく表示される
LINE ログインがなぜopen ID connectを導入したか
- OAuth2とOpenID Connectを使うことでログイン機能をサポートするようになりました。
- LINEログインを広くつかってほしい。その上で、多くのサービスでemail/電話番号を求めていたので、提供できるようにした
- 最初はemailや電話番号を提供するOAuth2を提供できるようにしたが、email/電話番号をずっとサードパーティが取得し続けられるのは気持ち悪いとユーザは感じると思った
- アクセストークンを発行すると同時に専用の独自のトークンを発行してアクセスしてもらうのも考えたが、LINEとしてもストレージ容量が増えたり、ユーザも管理の手間が増えるためやめた
- 広く標準化されたものを使った方が実装しやすいと感じたためOpenID Connectを使えば解決できると考えた
OpenID Connect
- OAuth2.0にシンプルな認可情報を付与したものがOpenID COnnect
- アクセストークンを取得する際に、ID Tokenを一緒に取得できる
- ID Tokenは認証情報を含んでいるJson web tokenになる
- id tokenをデコードするとJSONを得られる
- この中に電話番号などが入っている
- 今まではLINE profile APIを叩く必要があったが、これだけで完結できるようになった
- OpenIdConnectは認可フローも標準化されている
- Oauth2時代は、別途情報を取得するためのAPIを叩く必要があったが、この部分がID Tokenで標準化されたフローで取得できるようになった
- 簡単に実装できるライブラリが使えるようになる
OpenID Connectを用いたLINE Loginのフロー
- エンドユーザから3rd partyアプリ上で、LINEログインする
- ユーザに認可を求めるためにLINEサーバにリダイレクトする
- この際、リクエストURLにscope=openidを指定することで、OpenID Connectでのresponseになる
- 認証されるとLINEの認証ページが表示される
- ユーザが同意したら、redirect urlに戻される
- この際にstateとcodeが帰ってくるので、stateを検証する
- アクセストークンとid_tokenが取得できる
- id tokenをデコードして情報を得られます
OpenID Connectを用いることでよりLINE Loginが利用しやすくなったので、是非サービスを作成する際に取り入れたいと感じました。
View Comments
Thanks for sharing. I read many of your blog posts, cool, your blog is very good. https://www.binance.com/ar-BH/register?ref=FIHEGIZ8