Closed7
liff.init() についてメモ


- LIFF URL => 2. endpoint url => 3. endpoint url + LIFF URL state (path and query params)
e.g.)
https://liff.line.me/{liffId}/path_A/?key1=value1#URL-fragment
https://example.com/2020campaign/?key=value
https://example.com/2020campaign/path_A/?key=value&key1=value1#URL-fragment

つまり、liff url からアクセスできるのは、liff endpoint url の sub path のみになる
e.g. ) /liff-entry を endpoint url に設定 => liff url からアクセスできるのは /liff-entry/* になる

liff から LINE Login を行う場合、LINE Login の OAuth2.0 authorization url に付与される callbackUrl (redirect_uri) は liff endpoint url になる。

- lifff url を使わない (直接 liff.init する web app の url を叩く)
- LINE login を行わない
場合は、liff endpoint url の sub path 外で liff.init しても問題ない?
(このケースだと、もはやなぜ liff を使うのか、問題はあるが...)

localStorage に保存される値
localStorage 覗いてみたら、利用されていたのでメモしとく。
liff.init() 時に保存される値
LIFF_STORE:{LIFF_ID}:context
liff.init() すると localStorage に LIFF_STORE:{LIFF_ID}:context
が保存される。
`LIFF_STORE:{LIFF_ID}:context` の例
{
"type": "external",
"liffId": "xxxxxxxxxxxxxxxxxx",
"endpointUrl": "https://xxxxxxxxxxxxxxxxxx/",
"accessTokenHash": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
"availability": {
"shareTargetPicker": {
"permission": false,
"minVer": "10.3.0"
},
"multipleLiffTransition": {
"permission": true,
"minVer": "10.18.0"
},
"subwindowOpen": {
"permission": false,
"minVer": "11.7.0"
},
"scanCode": {
"permission": false,
"minVer": "9.4.0",
"unsupportedFromVer": "9.19.0"
},
"scanCodeV2": {
"permission": false,
"minVer": "11.7.0",
"minOsVer": "14.3.0"
},
"getAdvertisingId": {
"permission": false,
"minVer": "7.14.0"
},
"addToHomeScreen": {
"permission": false,
"minVer": "9.16.0"
},
"bluetoothLeFunction": {
"permission": false,
"minVer": "9.14.0",
"unsupportedFromVer": "9.19.0"
},
"skipChannelVerificationScreen": {
"permission": false,
"minVer": "11.14.0"
},
"addToHomeV2": {
"permission": false,
"minVer": "13.20.0"
},
"addToHomeHideDomain": {
"permission": false,
"minVer": "13.20.0"
},
"addToHomeLineScheme": {
"permission": false,
"minVer": "13.20.0"
}
},
"scope": [
"chat_message.write",
"openid",
"profile"
],
"menuColorSetting": {
"adaptableColorSchemes": [
"light"
],
"lightModeColor": {
"iconColor": "#111111",
"statusBarColor": "black",
"titleTextColor": "#111111",
"titleSubtextColor": "#B7B7B7",
"titleButtonColor": "#111111",
"titleBackgroundColor": "#FFFFFF",
"progressBarColor": "#06C755",
"progressBackgroundColor": "#FFFFFF"
},
"darkModeColor": {
"iconColor": "#FFFFFF",
"statusBarColor": "white",
"titleTextColor": "#FFFFFF",
"titleSubtextColor": "#949494",
"titleButtonColor": "#FFFFFF",
"titleBackgroundColor": "#111111",
"progressBarColor": "#06C755",
"progressBackgroundColor": "#111111"
}
},
"utsTracking": {
"mode": "none",
"sendRatio": 1
},
"miniDomainAllowed": false,
"permanentLinkPattern": "concat"
}

liff で LINE login した際に保存される値
LIFF_STORE:{LIFF_ID}:clientId
LINE Login channelId
LIFF_STORE:{LIFF_ID}:accessToken
accessToken
LIFF_STORE:{LIFF_ID}:IDToken
idToken
LIFF_STORE:{LIFF_ID}:decodedIDToken
decode された idToken
`LIFF_STORE:{LIFF_ID}:decodedIDToken` の例
{
"iss": "https://access.line.me",
"sub": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
"aud": "xxxxxxxxxxx",
"exp": 1715678623,
"iat": 1715675023,
"amr": [
"linesso"
],
"name": "xxxxxxxxxxx",
"picture": "https://profile.line-scdn.net/xxxxxxxxxxxxxxxxxxxxxxxxx"
}
このスクラップは2024/05/14にクローズされました