Node-RED에서 LIFF를 움직여 보았습니다.

19459 단어 linebotLIFFnode-red
Node-RED로 인증 기능을 사용한 어플리케이션을 만들 때는 세션을 사용할 수 없는 등의 제약이 있어 생각대로의 설계를 할 수 없는 일도 있다고 생각합니다. 그럴 때 LIFF를 사용하면 LINE 인증 기능을 사용한 애플리케이션을 쉽게 만들 수 있습니다. 그래서 새해 첫 번째는 Node-RED에서 LIFF를 사용한 웹 애플리케이션을 사용해 보았습니다. 덧붙여 이번은 작년 발매된 LIFF V2용의 개발 방법을 소개하므로, 궁리하면 브라우저에서도 LIFF 어플리를 움직일 수가 있습니다. (이번은 브라우저 대응으로 하고 있지 않습니다.) 브라우저에 대응시킨 이야기는 여기 로 소개하고 있으므로, 맞추어 부디.

이번 흐름





이번에는 LINE 앱에서 LIFF를 열면 자동 로그인하여 화면에 LINE 사용자 이름이 표시될 뿐입니다. Node-RED에서 다음 JSON을 가져와 사용하십시오.
[
    {
        "id": "b59bc4d3.917488",
        "type": "tab",
        "label": "フロー 1",
        "disabled": false,
        "info": ""
    },
    {
        "id": "49eeb9d7.b013e8",
        "type": "http in",
        "z": "b59bc4d3.917488",
        "name": "",
        "url": "/liffv2",
        "method": "get",
        "upload": false,
        "swaggerDoc": "",
        "x": 160,
        "y": 120,
        "wires": [
            [
                "ccb5bcbe.5d6bf"
            ]
        ]
    },
    {
        "id": "e184963c.01a588",
        "type": "http response",
        "z": "b59bc4d3.917488",
        "name": "",
        "statusCode": "",
        "headers": {},
        "x": 690,
        "y": 120,
        "wires": []
    },
    {
        "id": "80b9e0e4.c75be",
        "type": "template",
        "z": "b59bc4d3.917488",
        "name": "v2",
        "field": "payload",
        "fieldType": "msg",
        "format": "handlebars",
        "syntax": "mustache",
        "template": "<html>\n    <head>\n        <link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css\" integrity=\"sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M\" crossorigin=\"anonymous\">\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n        <title>LIFF Starter</title>\n    </head>\n    <body>\n        <h1 id=\"displaynamefield\"></h1>\n\n        {{!--load LIFF SDK--}}\n        <script src=\"https://static.line-scdn.net/liff/edge/2.1/sdk.js\"></script>\n        <script>\n            var userId = \"\";\n            window.onload = function() {\n                initializeLiff(\"{{payload}}\");\n            };\n            \n            function initializeLiff(myLiffId) {\n                liff\n                    .init({\n                        liffId: myLiffId\n                    })\n                    .then(() => {\n                        // start to use LIFF's api\n                        liff.getProfile().then(function(profile) {\n                            document.getElementById('displaynamefield').textContent = 'ようこそ' + profile.displayName + 'さん';\n                            userId = profile.userId;\n                        }).catch(function(error) {\n                            window.alert('Error getting profile: ' + error);\n                        })\n                    })\n                    .catch((err) => {\n                        document.getElementById('displaynamefield').textContent = \"LINEアプリで開いてください。\";\n                    });\n            }\n        </script>\n    </body>\n</html>",
        "output": "str",
        "x": 550,
        "y": 120,
        "wires": [
            [
                "e184963c.01a588"
            ]
        ]
    },
    {
        "id": "ccb5bcbe.5d6bf",
        "type": "change",
        "z": "b59bc4d3.917488",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "1653453273-3ybAnYe0",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 360,
        "y": 120,
        "wires": [
            [
                "80b9e0e4.c75be"
            ]
        ]
    }
]

배포하고 브라우저에서 【Node-REDのURL】/liffv2를 열면 다음 화면이 출력됩니다. LIFF의 설정을 하지 않기 때문에, 이 시점에서는 LINE의 유저명이 출력되지 않습니다. 이 URL에서 LIFF를 설정하므로 미리 메모해 둡시다.



LIFF URL 생성



LIFF v2에서 LIFF를 이동하려면 LIFF URL에 포함된 LIFF ID를 이동하는 응용 프로그램으로 설정해야 합니다. 그래서 LIFF를 움직이는 LINE bot 채널을 준비합니다. 여기 을 참고로 작성한 후, LIFF 탭을 열고 방금 메모한 URL을 엔드포인트 URL( 【Node-REDのURL】/liffv2 )에 복사합니다. 이 때 URL은 HTTPS로 입력하십시오. 그 이외에 항목이 있습니다만, 이번은 프로필명을 표시하므로, Scope 의 란의 Profile 에는 체크 넣어 주세요. 그 이외는 좋아하는 설정으로 괜찮습니다.



작성 버튼을 누르면 LIFF 목록이 출력됩니다. 이전 URL을 기록해 둡시다.


Node-RED 측 설정



앞서 준비한 플로우 안의 Change 노드(왼쪽에서 2번째의 노드)를 열어, 앞서 메모한 LIFF URL중, line://app/ 이후의 캐릭터 라인을 msg.payload에 대입시킵니다. 이 문자열이 앱 내에서 정의되어야 하는 LIFF ID입니다.



동작 확인



그럼, 동작 확인입니다. 이전 LINE bot를 친구에게 추가하고 메시지에 LIFF URL을 게시합니다. 스마트 폰의 LINE 앱에서 게시 한 링크를 탭하여 LIFF를 시작하십시오. iPhone에 사전 설치된 메모장 앱을 작성한 URL에서도 열 수 있습니다. 최초의 기동시에는 권한의 허가가 요구되므로, 허가해 둡시다.


허용하면 탭이 시작되고 사용자 이름이 화면에 표시되면 성공합니다.



이번에는 LIFF 앱을 Node-RED로 만들어 보았습니다. 이제 사용자 인증을 프런트 엔드에서 수행할 수 있으며, Node-RED와 같이 세션을 사용할 수 없는 개발 환경에서도 인증 앱을 만들 수 있습니다. 브라우저에서도 움직일 수 있도록 설정할 수 있으므로, 마음이 맞으면 대응시켜 보려고 생각합니다.
브라우저 대응시킨 LIFF는, 속편으로서 여기 로 정리하고 있습니다.

좋은 웹페이지 즐겨찾기