LINE SDKとLIFFの紹介
Ryohei N. Miyota
Product Manager, Developer Products, LINE Corp.
@josolennoso

EngineeringFOLLOW US!!
@LINE_DEV#line_dm

https://github.com/line

Engineering自己紹介• プロダクトマネージャー• デベロッパープロダクトチーム• 雑用 @ 京都オフィス• @josolennoso

Engineering

セッションの流れ
1. LINE Developer Productsの紹介
2. LINE Login
3. SDK
4. Roadmap in 2019
5. (京都オフィスについて)
6. Q & A
Engineering

DEVELOPER PRODUCTS @ LINE
LOGIN WEBBOT

Native SDK

LINE PAY

Graph API

Social Plugin

LIFF

Developer Center

IoT

etc…

Engineering

DEVELOPER PRODUCTS @ LINE
LOGIN WEBBOT

Native SDK

LINE PAY

Graph API

Social Plugin

LIFFDeveloper Center

IoTetc…

Engineering

担当プロダクト
LOGIN WEB

LINE内部/外部、デスクトップ/モバイルのLINEログイン機能全般

Native SDK

iOSもAndroidもGraph API

ソーシャルグラフサービス. 現状はパートナー向けのみだが…

LIFF

ComponentsやIDE周囲などの主に新機能
Engineering

LINE LOGIN

EngineeringCurrent Phase
NATIVE SDKLINE LOGINCOMPONENT

LIFF SDKEngineering

LINE LOGIN• OAuth2プロトコルを用いたいわゆるソーシャルログインサービス• LINEアカウントを使って他のウェブやネイティブアプリにログインすることが可能

EngineeringOAUTH2とは• あらかじめ信頼関係を構築したサービス
間で、ユーザーの同意のもとに、セキュアにユーザーの権限を受け渡しするためのプロトコル• ConsumerはProviderが保持しているUserの権限やデータを扱うことができる

Engineering

LINE LOGINの特徴• デフォルトでLINEアカウントのディスプレイ名、UserID、ステータスを提供• オプションでEmailなども提供• 最新バージョンのV2.1はOpenID Connect準拠• その他のユーザー権限を譲渡することもできる

Engineeringマイクロサービス化

Engineering

~ 2016.9
Talk Server

Channel Gateway
a.k.a. CGW
Auth Server

HBase

Engineering

Photo by Ricky Bamford

Engineering

~ 2016.9•Nginx•Bot, Login,Graph• Redis•etc

Talk Server

Channel Gateway
a.k.a. CGW
Auth Server

HBase

Engineering

2016.9 ~Talk Server

CGW
Auth Server

HBase

BotRedisEngineering

2017.9 ~Talk Server

Friendship
Channel ProxyAuthLogin

Bot

CGW

Engineering

2018 ~

Talk Server

Friendship
Channel ProxyAuthLogin

Kafka
Datalake

Bot
CGW

Engineering

LINE SDKEngineering

LINE SDK
• LINE LoginのNativeアプリケーション用のラッパー• iOSもAndroidも• 最新バージョンはV4.1• LINEクライアント間とのApp2Appのオートログイン機能を提供

Engineeringオートログインの仕組み

LINEに保存された認証情報をLINE SDKを使って取得

Engineeringオートログインの仕組み
1,2: SDKがLINEクライアントを呼び出す
3,4: クライアントがOAuthトークンを取得
6,7: SDKがアクセストークンをLINE Loginサーバーより取得

Engineering

LINE SDKの問題点
1. LINE Login v2.1とiOS版LINE SDKのオートログイ
ン処理方法の違い
2. ユーザー属性の受け渡し方式の違い
3. Swift, Kotlinへの対応
4. Login以外の機能の提供

Engineering

IOSにおけるオートログイン処理方法(Web) Login

Universal Linksを使用

SDK v4.1

カスタムURLスキームを使用*カスタムURLスキームだとセキュリ
ティリスクもあり

この違いによりクライアントには2種類のAuthのAPIが存在してしまう
Engineeringユーザー属性の受け渡し方式(Web) Login

OpenID Connectに準拠したID_TOKENを使用

SDK

Get Profile APIを使用

Engineering

SDK VERSION 5の主な機能
1. Universal LinksによるApp2App遷移に対応
2. LINE Login v2.1と完全互換
3. ID_TOKENによるユーザー属性取得
4. Swift版の提供

Engineering

SDK VERSION 5の主な機能
1. Universal LinksによるApp2App遷移に対応
2. LINE Login v2.1と完全互換
3. ID_TOKENによるユーザー属性取得
4. Swift版の提供
5. Opensource化
EngineeringSDKデモEngineeringSDKデモEngineering

LIFF

Engineering

LIFFとは• LIne Front-end Frameworkの略• LINEの機能に結びついたWebアプリケーションを簡単に作ることができるフレームワーク• オートログイン、Messaging APIをサポート

Engineering

Engineering

LIFFの仕組み
LIFF Server

Login Server

Login Token

LIFF Token

LIFFLINE
Implicitly pass
LIFF + Login Token

LIFF Token+ Login Token
Engineering

LIFFデモ福岡粗大ごみボット

Engineering

Roadmaps in 2019

Engineeringよく頂くフィードバック(LIFF) Loginとの親和性が良くない(LIFF) 専用のウェブアプリをデザイン・開発するのが億劫(SDK) LINE GAMEが使っているようなソーシャルグラフを使いたい(SDK) トーク周りの機能を使いたい
Engineering

LINEの目指すところ✓プロダクト間の一貫性✓プロダクト同士の親和性✓開発者側の負担を減らしたい

EngineeringDevelopers

Current Phase
NATIVE SDKLINE LOGINCOMPONENT

LIFF SDKEngineeringNext Phase

NATIVE SDKLINE LOGINCOMPONENT

LIFF SDKEngineeringロードマップ（SHORT-TERM）
SDK V5
LIFFでもLINE Loginのスコープを使えるようにする
LIFFを外部ブラウザでも開けるようにする

Engineering

SCOPEとは
OAuth2に出てくる、アクセス許可を取得したいユーザーリソースを指定するパラメーター
現在LIFFではユーザーからの認可を取れるscopeはprofileとchat_messageのみ**Loginのscopeの例

https://access.line.me/oauth2/v2.1/
authorize?response_type=code&client_id=123456&redirect_uri=https%3A%2F%2Ftimeline.line.me&state=1234&scope=openid%20email%20profile
Engineeringhttps://access.line.me/oauth2/v2.1/
authorize?response_type=code&client_id=123456&redirect_uri=https%3A%2F%2Ftim
eline.line.me&state=1234&scope=openid%
20email%20profile

Engineering

SCOPEとTOKENの関係
ユーザーからの認可を取れるscopeはprofileとchat_messageのみ
内部的にはprofile -> Login Token, chat_message -> LIFF
Tokenというように使い分けている
Login TokenとLIFF Tokenのセキュリティ許容度・生存時間の都合上Engineering

TOKENS @ LINE
Bot Token、LIFF Token、Login Token
だいたいJWSToken ≒ JWS(channel_id, userId, expire_at, permissions)

Engineering

LIFFの仕組み
LIFF Server

Login Server

Login Token

LIFF Token

LIFF

LINE
Implicitly pass
LIFF + Login Token

LIFF Token+ Login Token

何かこの辺でもっとできそうな気がする？
EngineeringLOGINの仕組み
Your Server

Login Server

Login Token

Login Token

EngineeringLOGINの昨今
Login Server

LIFF Server

LIFF Token

Login Token
Login Token + LIFF Token

Engineeringロードマップ（LONG-TERM）
LIFFでもLINE Loginのスコープを使えるようにする
LIFFを外部ブラウザでも開けるようにする

EngineeringFuture Phase

NATIVE SDKLINE LOGINCOMPONENTUICOMPONENT

LIFF SDKEngineering

UI設計サポート (LIFF)• 現状はスタイルガイドもUIのコンポー
ネントも未提供• テンプレートメッセージのようにテンLIFF

プレートとしてUIコンポーネントを提供予定

LINE

Engineering

UI設計サポート (LIFF)• 現状はスタイルガイドもUIのコンポーネ
ントも未提供• テンプレートメッセージのようにテンプ
LIFF

レートとしてUIコンポーネントを提供予

Ryohei定Yoh• Graph APIのレスポンスにも対応 (SDKも)

Brown
LINE

Engineeringネイティブライクな機能 (LIFF)• QRコード, GPS, Notification, といった機能も検討中• BLE連携は開発中• PWA (Progressive Web App)のような方向性• デバッグ環境のサポートもEngineering

NATIVE SDK 6• Graph APIとMessaging APIをUIとともに一般のデベロッパーにも提供• Botとのトークルームもサポート(できMy Native Appるようにしたい)
Ryohei
YohBrown
Engineering

京都オフィスEngineering

Engineering

Engineeringhttps://www.youtube.com/watch?v=TFaOV5CbNnIEngineering

We’re hiring!!
https://linecorp.com/ja/career/kyoto

Engineering

THANK YOU

Engineering