質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

解決済

LINEログイン機能の実装

turbo3681
turbo3681

総合スコア11

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1回答

0評価

3クリップ

1471閲覧

投稿2021/05/18 13:54

LINEログイン機能を以下のサイトを参考に作っています。

Webアプリに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

var request = require('request'); exports.handler = async(event) => { var token = await postRequest( 'https://api.line.me/oauth2/v2.1/token', { 'grant_type': 'authorization_code', 'code': event.queryStringParameters.code, 'redirect_uri': 'https://iemkbzsbl6.execute-api.ap-northeast-1.amazonaws.com/default/20210518linetest', 'client_id': 'ここにチャネルIDを入れています', 'client_secret': 'ここにチャネルシークレットを入れています' } ); var tokenBody = JSON.parse(token.httpResponse.body); const response = { statusCode: 200, headers: {'content-type': 'text/html; charset=utf-8'}, body: `<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Login</title> </head> <body> <h3>json</h3> <textarea>${JSON.stringify({event: event, token: token, tokenBody: tokenBody})}</textarea> </body> </html> ` }; return response; }; var postRequest = (url, form) => { return new Promise((resolve) => { request.post( {url: url, form: form}, (err, httpResponse, body) => { resolve({ err: err, httpResponse: httpResponse, body: body }); } ); }); };

----login.htmlファイル----
実際に書いたコードです。

html

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Login</title> </head> <body> <a href="https://access.line.me/oauth2/v2.1/authorize?response_type=code&client_id=チャネルIDを入れています &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> </body> </html>

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。