React에서 LIFF (LINE Front-end Framework) v2 사용하기
데모 앱은 여기에 게시되었습니다.
2020/07/10 추가
LIFF SDK가 (시험적으로) npm package로 공개되었습니다.
https://developers.line.biz/ko/docs/liff/release-notes/#liff-sdk%E3%82%92npm%E3%83%91%E3%83%83%E3%82%B1%E3 %83%BC%E3%82%B8%E3%81%A8%E3%81%97%E3%81%A6%E5%85%AC%E9%96%8B%E3%81%97%E3%81 %BE%E3%81%97%E3%81%9F
이에 따라
node_modules
의 LIFF SDK 읽기에 해당하는 react-liff 버전 0.5.0을 출시했습니다.사용법은 여기을 참조하십시오.
2020/06/15 추가
버전 0.4.0을 출시했습니다. 로그인 상태를
useState()
에서 관리 할 수 있으므로,한층 더 편리함이 좋아졌다고 생각합니다.
샘플을 새로운 API를 사용한 것으로 바꿨습니다.
사용법
CRA로 React SPA 개발 환경 만들기
npx create-react-app react-liff-sample
react-liff를 종속성에 추가
cd react-liff-sample
yarn add react-liff
public/index.html에서 LIFF SDK 로드
<title>React App</title>
+ <script defer charset="utf-8" src="https://static.line-scdn.net/liff/edge/versions/2.1.13/sdk.js">
</head>
src/index.js에 LiffProvider 추가
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
+import { LiffProvider } from 'react-liff';
+
+const liffId = process.env.LINE_LIFF_ID ?? '';
+const stubEnabled = process.env.NODE_ENV !== 'production';
+
ReactDOM.render(
<React.StrictMode>
- <App />
+ <LiffProvider liffId={liffId} stubEnabled={stubEnabled}>
+ <App />
+ </LiffProvider>
</React.StrictMode>,
document.getElementById('root')
);
src/App.js에 useLiff 추가
-import React from 'react';
+import React, { useEffect, useState } from 'react';
import logo from './logo.svg';
import './App.css';
+import { useLiff } from 'react-liff';
+
function App() {
+ const [displayName, setDisplayName] = useState('');
+ const { error, liff, loggedIn, ready } = useLiff();
+
+ useEffect(() => {
+ if (!loggedIn) return;
+
+ (async () => {
+ const profile = await liff.getProfile();
+ setDisplayName(profile.displayName);
+ })();
+ }, [liff, loggedIn]);
+
+ const showDisplayName = () => {
+ if (error) return <p>Something is wrong.</p>;
+ if (!ready) return <p>Loading...</p>;
+
+ if (!loggedIn) {
+ return <button className="App-button" onClick={liff.login}>Login</button>;
+ }
+ return (
+ <>
+ <p>Welcome to the react-liff demo app, {displayName}!</p>
+ <button className="App-button" onClick={liff.logout}>Logout</button>
+ </>
+ );
+ }
+
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
- <p>
- Edit <code>src/App.js</code> and save to reload.
- </p>
+ {showDisplayName()}
<a
className="App-link"
href="https://reactjs.org"
LIFF 앱을 채널에 추가
실제로 움직여 보려면
LIFF ID
가 필요하기 때문에,LIFF 앱을 채널에 추가
참고로 LIFF 앱 추가
배포
HTTPS
사용 가능하고 게시된 서버라면 어디서나 좋습니다.Firebase Hosting, GitHub Pages, AWS S3 근처가 쉽고 좋다고 생각합니다.
GitHub Pages에 배포하는 경우 htps : // 기주 b. 코 m / 페 아세이리 s / 아 c 치온 s gh 퍼게 s을 사용하면 유용합니다.
동작 확인
LINE에서 배포한 페이지에 액세스하면 자동 로그인 후 LINE 표시 이름이 표시됩니다.
(이하의 캡쳐는 로컬 환경에서 실행했을 때의 것이므로, stub 의 반환값이 표시되고 있습니다.)
마지막으로
npm package를 게시한 후 이런 트윗을 찾았습니다. .
LIFF를 React + TypeScript로 개발하기 위한 공식 npm 모듈이 나오는 것 같다. (From LINE Dev Day) #LINE_API #serverless #AWS #LINE_API_XTECH — 아키 @ 푸파오 (@maccostar) February 6, 2020
빨리 공개되면 좋네요! ;_;
이상
참고
Reference
이 문제에 관하여(React에서 LIFF (LINE Front-end Framework) v2 사용하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/epaew_dev/items/cc2e8658f7585a55c62d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)