66809


最終的にはwebアプリケーションにLINEログインを仕込みたいだけのことなので、Python-
flaskなどで実装すれば良い実例がたくさんあるのですが、後学のため、サーバーの挙動などを実際に目で見たく試行していたところ表題の質問にいきあたりましたので質問させて頂きたく。

⬛︎やりたいこと  
・MacのターミナルからcurlコマンドでLINEログインの挙動を確かめたい

⬛︎できていること  
・ブラウザで、request_uriを入力し、リダイレクト先に移動して、認可コードの取得

⬛︎状況  
公式のドキュメントを見ながら進めております。  
<https://developers.line.biz/ja/docs/line-login/integrate-line-login/#making-
an-authorization-request>

ドキュメント内認可リクエストの例

[code]

    https://access.line.me/oauth2/v2.1/authorize?response_type=code&client_id=1234567890&redirect_uri=https%3A%2F%2Fexample.com%2Fauth&state=12345abcde&scope=profile%20openid&nonce=09876xyz
    
[/code]

これをもとに、自分のidなどに変更してリクエストを叩いたところ、ブラウザだと画面遷移して、最終のリダイレクトページまで設定したところにたどり着けるのですが、、、

curlコマンドでやると、

[code]

    ˜前略˜
    <p class="mdLYR03Desc mdMN10Desc">
                  JavaScript is disabled on your browser.<br />
    Please enable JavaScript to use this site.            </p>
              </section>
            </div>
          </div>
        </div>
      </div>
    </noscript>
    
    <div id="__layout">
      <div class="LyBody" id="app">
        <app
          code="400"
          message="Bad Request"
          text="Confirm your request. client_id parameter is null."
        >
        </app>
      </div>
    </div>
    
    ˜後略˜
    
[/code]

と表示され、どうやって自分の情報をPOSTしたら良いかわかりませんでしたので質問にあげました。

お答えいただける方がいらっしゃれば幸いです。宜しくお願いいたします。


CC BY-SA 4.0
2020-05-18T15:46:17.237
66752
2020-05-20T07:17:12.513
29307
question
api oauth curl line
curlコマンドでjavascriptのフォーム情報をPOSTする方法を知りたいです。＃LINEログイン


URL部分を[シングルクォート](https://www.gnu.org/software/bash/manual/html_node/Quoting.html)で囲うと上手く行くと思います。

[code]

    curl 'https://access.line.me/oauth2/v2.1/authorize?response_type=code&client_id=1234567890&redirect_uri=https%3A%2F%2Fexample.com%2Fauth&state=12345abcde&scope=profile%20openid&nonce=09876xyz'
    
[/code]

ステータスコードは[`302`](https://developer.mozilla.org/ja/docs/Web/HTTP/Status/302)になるので、ブラウザと同じようにリダイレクト先を表示するには[`-L`](https://curl.haxx.se/docs/manpage.html#-L)オプションも付与して

[code]

    curl -L '上と同じURL'
    
[/code]

とすれば良いです。

* * *

ちなみに、[Google
Chromeには、ブラウザでアクセスしたリクエストをcurl形式でコピーできる機能があります](https://developers.google.com/web/updates/2015/05/replay-
a-network-request-in-curl)。  
今回のようなことを行いたい場合に有用だと思います。


CC BY-SA 4.0
2020-05-20T07:17:12.513
66809
2020-05-20T07:17:12.513
2808
66752
answer