質問編集履歴

2

自己解決しました。

2021/08/23 06:45

投稿

naUc
naUc

スコア36

test CHANGED
File without changes
test CHANGED
@@ -58,7 +58,7 @@
58
58
 
59
59
  6. `php artisan passport:client` 実行し、テストクライアントを登録
60
60
 
61
- (userId:3 , リダイレクトurl: 127.0.0.1:8800/callback を設定
61
+ (userId:3 , リダイレクトurl: http://127.0.0.1:8800/api/call.php を設定
62
62
 
63
63
  client_secret: ycSOk6b2SbKH9VpRUUT9v3Ty9kufYiSUI5VrIprO)
64
64
 
@@ -82,113 +82,65 @@
82
82
 
83
83
  ## ソースコード
84
84
 
85
- クセスークンを返Laravel `rotes/auth.php`
85
+ クライアプリから呼び出
86
86
 
87
- ``` php
87
+ oauth.php
88
88
 
89
- use Illuminate\Http\Request;
89
+ ``` php
90
90
 
91
- use Illuminate\Support\Str;
91
+ <?php
92
-
93
- use Illuminate\Support\Facades\Http;
94
92
 
95
93
 
96
94
 
97
- Route::get('/callback',function (Request $request){
95
+ require 'vendor/autoload.php';
98
96
 
99
- $state = $request->session()->pull('state');
97
+ use GuzzleHttp\Client as Client;
98
+
99
+ $guzzle = new Client;
100
100
 
101
101
 
102
102
 
103
- throw_unless(
103
+ $query = http_build_query([
104
104
 
105
- strlen($state) > 0 && $state === $request->state,
105
+ 'client_id' => '3',
106
106
 
107
- InvalidArgumentException::class
107
+ 'redirect_uri' => 'http://localhost:3000/api/call.php',
108
108
 
109
- );
109
+ 'response_type' => 'code',
110
110
 
111
- $response = Http::asForm()->post('http://localhost:8080/oauth/token', [
111
+ 'scope' => '',
112
112
 
113
- 'grant_type' => 'authorization_code',
114
-
115
- 'client_id' => 'client-id',
116
-
117
- 'client_secret' => 'client-secret',
118
-
119
- 'redirect_uri' => 'http://127.0.0.1:8800/callback',
120
-
121
- 'code' => $request->code,
122
-
123
- ]);
113
+ ]);
124
114
 
125
115
 
126
116
 
127
- return $response->json();
117
+ //認証確認画面にリダイレクト
128
118
 
129
- });
130
-
131
-
132
-
133
-
134
-
135
- Route::get('/redirect', function (Request $request) {
136
-
137
- $request->session()->put('state', $state = Str::random(40));
138
-
139
- $query =http_build_query([
140
-
141
- 'client_id' => 'client-id',
142
-
143
- 'redirect_uri' => 'http://127.0.0.1:8800/callback',
144
-
145
- 'response_type' => 'code',
146
-
147
- 'scope' => '',
148
-
149
- 'state' => $state,
150
-
151
- ]);
152
-
153
- return redirect('http://localhost:8080/oauth/authorize?'.$query);
119
+ header('Location: http://localhost:8080/oauth/authorize?'.$query);
154
-
155
- });
156
-
157
-
158
120
 
159
121
  ```
160
122
 
161
123
 
162
124
 
163
- アクセストークンを表示する Laravel `rotes/web.php`
125
+ call.php
164
126
 
165
127
  ``` php
166
128
 
167
- Route::get('/redirect', function () {
129
+ <?php
168
130
 
169
- $query = http_build_query([
131
+ require 'vendor/autoload.php';
170
132
 
171
- 'client_id' => '3',
172
-
173
- 'redirect_uri' => 'http://127.0.0.1:8800/callback',
174
-
175
- 'response_type' => 'code',
176
-
177
- 'scope' => '',
133
+ use GuzzleHttp\Client as Client;
178
-
179
- ]);
180
-
181
- return redirect('http://localhost:8080/oauth/authorize?'.$query);
182
-
183
- });
184
134
 
185
135
 
186
136
 
187
- Route::get('/callback', function () {
137
+ $http = new Client;
188
138
 
189
- $http = new GuzzleHttp\Client;
190
139
 
140
+
141
+ if($_GET['code']){
142
+
191
- $response = $http->post('http://localhost:8080/oauth/token', [
143
+ $response = $http->post('http://127.0.0.1:8080/oauth/token',[
192
144
 
193
145
  'form_params' => [
194
146
 
@@ -198,18 +150,22 @@
198
150
 
199
151
  'client_secret' => 'ycSOk6b2SbKH9VpRUUT9v3Ty9kufYiSUI5VrIprO',
200
152
 
201
- 'redirect_uri' => 'http://127.0.0.1:8800/callback',
153
+ 'redirect_uri' => 'http://localhost:3000/api/call.php',
202
154
 
203
- 'code' => request()->code,
155
+ 'code' => $_GET['code'],
204
156
 
205
157
  ],
206
158
 
207
159
  ]);
208
160
 
209
- $res = json_decode((string) $response->getBody(), true);
210
161
 
211
- echo $res['access_token'];
212
162
 
163
+ $res = json_decode((string)$response->getBody(), true);
164
+
165
+ echo $res['access_token'];
166
+
213
- });
167
+ }
168
+
169
+
214
170
 
215
171
  ```

1

laravel6にて動作確認したため

2021/08/23 06:45

投稿

naUc
naUc

スコア36

test CHANGED
File without changes
test CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  クライアントアプリにアクセストークン表示を目的にしておりますが表題通り進まないため、質問になります。
4
4
 
5
- 過去にlaravel6を少触っだけですので初期設定ど抜けている可能性もあるのですが、
5
+ 一度laravel6にて確認したところ、問題く認証画面表示アクセストークンからユーザ情報取得までできました。
6
-
6
+
7
- 参考URLなど教えていただければ幸いです。よろしくお願いいたします。
7
+ よろしくお願いいたします。
8
8
 
9
9
 
10
10