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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1538閲覧

laravel8 passport 認証画面が表示されない。

naUc

総合スコア36

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/08/06 08:12

編集2021/08/23 06:45

laravel8にてOAuthを使用したサーバーを構築したいので、laravel passportをインストールしたのですが、
クライアントアプリにアクセストークン表示を目的にしておりますが表題通り進まないため、質問になります。
一度laravel6にて確認したところ、問題なく認証画面が表示、アクセストークンからユーザ情報取得までできました。
よろしくお願いいたします。

##開発環境

  • docker
  • nginx
  • php7.3
  • mysql5.7
  • phpmyadmin
  • composer

参考にしたURL

操作した内容

認可サーバー(アクセストークンを返すサーバー) localhost:8080
クライアントアプリ(接続元:アクセストークンを画面上に表示) 127.0.0.1:8800

  1. php artisan migrate
  2. php artisan passport:install 暗号化キーを作成
  3. AuthServiceProvider boot()メソッド内に追記
  4. config/auth.php 構成ファイルを修正
  5. php artisan passport:install
  6. php artisan passport:client 実行し、テストクライアントを登録

(userId:3 , リダイレクトurl: http://127.0.0.1:8800/api/call.php を設定
client_secret: ycSOk6b2SbKH9VpRUUT9v3Ty9kufYiSUI5VrIprO)
7. 127.0.0.1:8800/redirect アクセス後、ログイン画面が表示され、
登録したユーザーでログイン完了後、画面上に

{"error":"invalid_client", "error_description":"Client authentication failed", "message":"Client authentication failed"} ```と表示されます。 クライアントに登録されている情報が異なるのかと思われますが、どこが間違っているかわかりません。 ## ソースコード クライアントアプリから呼び出す oauth.php ``` php <?php require 'vendor/autoload.php'; use GuzzleHttp\Client as Client; $guzzle = new Client; $query = http_build_query([ 'client_id' => '3', 'redirect_uri' => 'http://localhost:3000/api/call.php', 'response_type' => 'code', 'scope' => '', ]); //認証確認画面にリダイレクト header('Location: http://localhost:8080/oauth/authorize?'.$query);

call.php

php

1<?php 2require 'vendor/autoload.php'; 3use GuzzleHttp\Client as Client; 4 5$http = new Client; 6 7if($_GET['code']){ 8 $response = $http->post('http://127.0.0.1:8080/oauth/token',[ 9 'form_params' => [ 10 'grant_type' => 'authorization_code', 11 'client_id' => '3', 12 'client_secret' => 'ycSOk6b2SbKH9VpRUUT9v3Ty9kufYiSUI5VrIprO', 13 'redirect_uri' => 'http://localhost:3000/api/call.php', 14 'code' => $_GET['code'], 15 ], 16 ]); 17 18 $res = json_decode((string)$response->getBody(), true); 19 echo $res['access_token']; 20} 21

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

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

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

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

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

guest

回答1

0

自己解決

エラーメッセージ: Client authentication failed は
clientのredirect_urlに設定しているる redirect_uri と実際のコードが間違っていることで発生するらしく
DB:oauth_clients を確認したところ、urlが間違っていました。
修正後、認証画面が表示されました。

投稿2021/08/23 07:03

naUc

総合スコア36

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問