📑
【Flutter】Flutter Web × LINE LIFF:サンプルアプリで動作確認 〜flutter_line_liff〜
はじめに
LINE LIFF × Flutter Web でサンプルアプリを作ってユーザ情報を取得してみた。
したこと
- LINE Developersの登録➜チャネル作成してLIFF IDの生成 [1]
- web/index.htmlにLIFF SDKのCDNパスを記載
- flutter_dotenvライブラリを用いてLIFF IDを本番環境で使用 [2]
- flutter_line_liffパッケージの使用
詳細
index.html
<head>
<script src="flutter.js" defer></script>
<!-- <head>配下に以下挿入 -->
<script charset="utf-8" src="https://static.line-scdn.net/liff/edge/versions/2.20.3/sdk.js"></script>
</head>
main.dart
import 'package:flutter/material.dart';
import 'package:flutter_line_liff/flutter_line_liff.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
Profile? userInfo;
Future<void> main() async {
// LIFF IDを定義したenvファイル読み込み
await dotenv.load(fileName: "env");
// LIFF初期化処理
await FlutterLineLiff().init(
config: Config(liffId: dotenv.env['LIFF_ID'].toString()),
successCallback: () {
debugPrint('LIFF init success.');
},
errorCallback: (error) {
debugPrint(
'LIFF init error: ${error.name}, ${error.message}, ${error.stack}');
},
);
// ユーザ情報の取得
userInfo = await FlutterLineLiff().profile;
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('LINE LIFF sample app'),
),
body: const HomePage(),
),
);
}
}
class HomePage extends StatelessWidget {
const HomePage({Key? key}) : super(key: key);
Widget build(BuildContext context) {
if (userInfo == null) {
return const Center(
child: Text("decodedIDToken: null"),
);
} else {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
// プロフィール情報の表示
const Text("Profile Picture"),
Image.network(userInfo!.pictureUrl.toString()),
Text("User Name: ${userInfo!.displayName}"),
Text("User ID: ${userInfo!.userId}"),
Text("Status Message: ${userInfo!.statusMessage}"),
],
),
);
}
}
}
おわりに
-
LIFFとは?どんなことができる?どんな動きする?
という思いから作ってみたサンプルアプリ。
基本的なプロフィール情報は簡単に取得できることがわかった◎
-
今回はflutter_line_liffパッケージを使用したが、できたばかりパッケージなので、実際の開発で採用するかは要検討。(使用時のverは0.0.3)
サクッと動かして動作確認してみたい。ってだけなら十分。
LIFF SDKのjs関数を直接呼ぶVerはこちら↓
「LINE LIFF × Flutter Web:サンプルアプリで動作確認 〜js〜」
-
今回はgetProfile()で取得したが、getDecodedIDToken()でも基本的なユーザ情報は取得できた。
詳しい違いはレファレンス参照。
「LIFF v2 APIリファレンス」
liff.getDecodedIDToken()
LIFF SDKが取得したIDトークンの「ペイロード」を取得します。ペイロードには、ユーザーの表示名、プロフィール画像のURL、メールアドレスなどの情報が含まれます。
LIFFアプリでユーザーの表示名などを利用する場合に、このAPIを利用してください。
liff.getProfile()
現在のユーザーのプロフィール情報を取得します。
-
LINE Developers登録方法については検索すると記事たくさん出てくるので割愛 ↩︎
-
flutter_dotenvについての参考記事: FlutterWebデプロイ時に'.env'が読み込まれない ↩︎
Discussion
トピック名を
fluterweb
からflutterweb
へ修正することをご検討ください。ご指摘ありがとうございます!誤字修正しました🙇