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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

HttpWebRequest

HttpWebRequestとは.NETにおけるクラスであり、WebRequestクラスをHTTPに導入するものです。

Q&A

解決済

1回答

2608閲覧

GASからLINEログインへのリンクで「in a frame because it set 'X-Frame-Options' to 'deny'」となる

HirokazuYokota

総合スコア1

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

HttpWebRequest

HttpWebRequestとは.NETにおけるクラスであり、WebRequestクラスをHTTPに導入するものです。

0グッド

0クリップ

投稿2020/10/15 03:31

編集2020/10/18 12:05

前提・実現したいこと

GASで作成したWEBページからLINEログインを行い、ページにアクセスするLINEユーザーの情報(ユーザー名等)を取得したいと考えています。

LINE Developersのサイトにあるドキュメントに従って下記の動きとなるように作成を進めていますが、下記の「2」で接続でコンソール上下記のエラーが出てしまいます。

Console

1Refused to display 'https://access.line.me/oauth2/v2.1/login?loginState=2AKbUE4eZMcvLPQOJJzjxr&loginChannelId=xxxxxxxxxx&returnUri=%2Foauth2%2Fv2.1%2Fauthorize%2Fconsent%3Fscope%3Dprofile%26response_type%3Dcode%26redirect_uri%3Dhttps%253A%252F%252Fscript.google.com%252Fmacros%252Fd%252FGASのスクリプトID%252Fusercallback%26state%3Dxxxxxx%26client_id%3Dxxxxxxxxxx' in a frame because it set 'X-Frame-Options' to 'deny'.

何が間違えているのでしょうか?質問させてください。

1.LINEブラウザからWEBページ(GAS)にアクセス
2.WEBページからLINEログインページに遷移
3.LINEログインからcallback URL(GAS)にリダイレクト
4.WEBページにLINEのユーザーIDを表示

発生している問題・エラーメッセージ

ウェブページへのアクセス不可 ウェブページ(https://access.line.me/oauth2/v2.1/login?loginState=LVH2Q9uvdA38qpXYZzIegV&loginChannelId=xxxxxxxxxx&returnUri=%2Foauth2%2Fv2.1%2Fauthorize%2Fconsent%3Fscope%3Dprofile%26response_type%3Dcode%26redirect_uri%3Dhttps%253A%252F%252Fscript.google.com%252Fmacros%252Fd%252FGASのスクリプトID%252Fusercallback%26state%3Dxxxxxx%26client_id%3Dxxxxxxxxxx)は次の理由で読み込めませんでした: net::ERR_BLOCKED_BY_RESPONSE

該当のソースコード

test.gs

gs

1function doGet(e) { 2 3 var state = e.parameter['state']; 4 5 if (state == null) { 6 return HtmlService.createTemplateFromFile('index').evaluate().setTitle('INDEX'); 7 }else{ 8 return HtmlService.createTemplateFromFile('main').evaluate().setTitle('MAIN'); 9 } 10}

index.html

HTML

1<!DOCTYPE html> 2<html lang="ja"> 3 <head> 4 <meta charset="uft-8"> 5 <meta http-equiv="refresh" content="1;URL=https://access.line.me/oauth2/v2.1/authorize?response_type=code&client_id=xxxxxxxxxx&state=xxxxxx&scope=profile&redirect_uri=https%3A%2F%2Fscript.google.com%2Fmacros%2Fd%2FGASのスクリプトID%2Fusercallback"> 6 </head> 7 <body> 8 <p>test</p> 9 </body> 10</html> 11}

main.html

HTML

1<!DOCTYPE html> 2<html> 3 <head> 4 <base target="_top"> 5 </head> 6 <body> 7 <p>メインページ</p> 8 ... 9 </body> 10</html> 11}

LINEログインのチャネルに設定しているCallback URL

https://script.google.com/macros/d/GASのスクリプトID/usercallback

試したこと

・LINEログインのチャネルが開発中となっていたので、公開中に変更するも変わりなしです。
・ブラウザをchromeで試してもエラーとなります。
・PCのLINEブラウザ、chromeで試してもエラーとなります。
・「ERR_BLOCKED_BY_RESPONSE」でググるも情報が少なく、いくつかのサイトでiframeの問題の可能性があると見つけたため、test.gsのreturn文を下記の通り変更してみるも変わりなしです。
・Index.htmlに指定しているredirect_uriのURLをエンコードした内容に書き直しても同じエラーとなります。
test.gs

gs

1return HtmlService.createTemplateFromFile('index').evaluate().setTitle('INDEX').setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);

・「1」の時点で表示されているソースを見ると下記の内容でした。
(goog.script.init内のuserHtmlのみが当方で作成したソースで、それ以外はGASが生成して返されたソースです。)

HTML

1<!doctype html> 2<html> 3 <head> 4 <meta name="chromevox" content-script="no"> 5 <title>HELLO</title> 6 <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> 7 <link rel="stylesheet" href="/static/macros/client/css/927719976-mae_html_css_ltr.css"> 8 <script type="text/javascript" src="/static/macros/client/js/1162875732-warden_bin_i18n_warden__ja.js" nonce="/gTGIhVzEt2ZNu2pc1PJjg"></script> 9 </head> 10 <body role="main"> 11 <table id="warning-bar-table" class="full_size" cellspacing="0" cellpadding="0"> 12 <tr> 13 <td> 14 <div id="warning" class="warning-bar"></div> 15 </td> 16 </tr> 17 <tr> 18 <td style="height: 100%"> 19 <iframe 20 id="sandboxFrame" 21 title="HELLO" 22 allow="accelerometer *; 23 ambient-light-sensor *; 24 autoplay *; 25 camera *; 26 encrypted-media *; 27 fullscreen *; 28 geolocation *; 29 gyroscope *; 30 magnetometer *; 31 microphone *; 32 midi *; 33 payment *; 34 picture-in-picture *; 35 speaker *; 36 usb *; 37 vibrate *; 38 vr *" 39 sandbox="allow-downloads 40 allow-forms 41 allow-modals 42 allow-popups 43 allow-popups-to-escape-sandbox 44 allow-same-origin 45 allow-scripts 46 allow-top-navigation"></iframe> 47 </td> 48 </tr> 49 </table> 50 <script type="text/javascript" nonce="/gTGIhVzEt2ZNu2pc1PJjg"> 51 ( 52 function() { 53 var el = document.getElementById('sandboxFrame'); 54 el.onload = function() { 55 goog.script.init( 56 "{ 57 "functionNames":["doGet"] 58 ,"sandboxMode":"IFRAME_SANDBOX" 59 ,"callbackTimeout":390000 60 ,"deploymentId":"デプロイメントID" 61 ,"eei":"" 62 ,"sandboxHost":"https://n-iavjpkhnbj3j3nvcg3fpz73nnempjkndwekqr2y-0lu-script.googleusercontent.com" 63 ,"clientSideProperties":{"google.script.sandbox.mode":"IFRAME_SANDBOX" 64 ,"google.script.host.origin":"https://script.google.com"} 65 ,"actionPrefix":"/macros/s/デプロイメントID" 66 ,"userHtml":"<!DOCTYPE html> 67 <html lang="ja"> 68 <head> 69 <meta charset="uft-8"> 70 <meta http-equiv="refresh" content="20;URL=https://access.line.me/oauth2/v2.1/authorize?response_type=code&client_id=xxxxxxxxxx&state=xxxxxx&scope=profile&redirect_uri=https://script.google.com/macros/d/GASのスクリプトID/usercallback"> 71 </head> 72 <body> 73 <p>test</p> 74 </body> 75 </html>" 76 ,"ncc":"{"awhs":true}" 77 }" 78 , "AJuLMu2sNdwkuf81Mzux7sD4Is3E47NnGw:xxxxxxxxxxxxx" 79 , undefined 80 , true 81 , true 82 , "true" 83 , "https://n-iavjpkhnbj3j3nvcg3fpz73nnempjkndwekqr2y-0lu-script.googleusercontent.com"); 84 } 85 el.src = 'https://n-iavjpkhnbj3j3nvcg3fpz73nnempjkndwekqr2y-0lu-script.googleusercontent.com/userCodeAppPanel'; 86 }() 87 ); 88 </script> 89 </body> 90</html>

補足情報

GASのデプロイ情報
・Apps Script Runtime : V8
・アクセス権限 : Anyone, even anonymous

参考ドキュメント
https://developers.line.biz/ja/docs/line-login/integrate-line-login-v2/
https://developers.line.biz/ja/docs/line-login/integrate-line-login/

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

###エラー原因
そもそもOauthの利用ができていなかったことが根本原因。
下記URLのライブラリを用いて手順通りに実施することで解決。
Oauthライブラリ(Git)

投稿2020/10/19 23:50

編集2020/10/20 13:28
HirokazuYokota

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問