LINEログイン機能を以下のサイトを参考に作っています。
⇒ LINEログイン(LINE Developers公式サイト)
LINEのロゴをクリックすると、認証画面への切り替え、その後リダイレクトされた画面でユーザー情報が表示される、というものです。
しかしながら、認証画面への切り替えと、その後のリダイレクトがなされず、全く動かない状態です。
以下のようなエラーが出ています・・・が対処の仕方がわかりません。。。
undefined ERROR Uncaught Exception
{
"errorType": "Runtime.HandlerNotFound",
"errorMessage": "index.handler is undefined or not exported",
"stack": [
"Runtime.HandlerNotFound: index.handler is undefined or not exported",
" at Object.module.exports.load (/var/runtime/UserFunction.js:144:11)",
" at Object.<anonymous> (/var/runtime/index.js:43:30)",
" at Module._compile (internal/modules/cjs/loader.js:1063:30)",
" at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)",
" at Module.load (internal/modules/cjs/loader.js:928:32)",
" at Function.Module._load (internal/modules/cjs/loader.js:769:14)",
" at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)",
" at internal/main/run_main_module.js:17:47"
]
}
記事が2019年11月と少し古いことと、私自身プログラミング初心者ということもあり、そもそも実装できないのか、それとも単純に間違えているだけなのかの判断が出来ずにいます。
アドバイスいただけませんでしょうか。どうぞよろしくお願い致します。
----機能実装の流れ----
1.ログインボタンを作る
2.LINEにチャネルを作る
3.認証後のページを作成
4.Lambda関数を作成
5.HTMLのログインボタンのリンク
6.LINE認証ページからLINE認証後のページへのURLを設定
----気になっている点----
エラーの内容から考えて、以下の記事と関係ありそうですが、何をどうすれば良いのかわかりません。 ⇒ ハンドラが見つからず、index.jsを実行できない
----Lambda関数(index.jsファイル)----
JavaScript
1var request = require('request'); 2exports.handler = async(event) => { 3 var token = await postRequest( 4 'https://api.line.me/oauth2/v2.1/token', 5 { 6 'grant_type': 'authorization_code', 7 'code': event.queryStringParameters.code, 8 'redirect_uri': 'https://iemkbzsbl6.execute-api.ap-northeast-1.amazonaws.com/default/20210518linetest', 9 'client_id': 'ここにチャネルIDを入れています', 10 'client_secret': 'ここにチャネルシークレットを入れています' 11 } 12 ); 13 var tokenBody = JSON.parse(token.httpResponse.body); 14 const response = { 15 statusCode: 200, 16 headers: {'content-type': 'text/html; charset=utf-8'}, 17 body: `<!DOCTYPE html> 18<html lang="ja"> 19 <head> 20 <meta charset="utf-8"> 21 <title>Login</title> 22 </head> 23 <body> 24 <h3>json</h3> 25 <textarea>${JSON.stringify({event: event, token: token, tokenBody: tokenBody})}</textarea> 26 </body> 27</html> 28` 29 }; 30 return response; 31}; 32 33var postRequest = (url, form) => { 34 return new Promise((resolve) => { 35 request.post( 36 {url: url, form: form}, 37 (err, httpResponse, body) => { 38 resolve({ 39 err: err, 40 httpResponse: httpResponse, 41 body: body 42 }); 43 } 44 ); 45 }); 46};
----login.htmlファイル----
実際に書いたコードです。
html
1<!DOCTYPE html> 2<html lang="ja"> 3 <head> 4 <meta charset="utf-8"> 5 <title>Login</title> 6 </head> 7 <body> 8 <a href="https://access.line.me/oauth2/v2.1/authorize?response_type=code&client_id=チャネルIDを入れています 9&redirect_uri=https%3A%2F%2Fiemkbzsbl6.execute-api.ap-northeast-1.amazonaws.com%2Fdefault%2F20210518linetest&scope=profile%20openid"><img src="LineLoginButtonImage/images/DeskTop/2x/44dp/btn_login_base.png"/></a> 10 </body> 11</html>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/19 02:54
2021/05/19 02:58
2021/05/19 02:59
2021/05/19 03:10
2021/05/19 03:14