我已经按照this教程设置了Laravel和Laravel Passport。 为了测试对api的调用,我在服务器上的其他目录中使用了此测试客户端:
<?php
require "vendor/autoload.php";
$client = new GuzzleHttp\Client;
try {
$response = $client->post('http://todos.test/oauth/token', [
'form_params' => [
'client_id' => 2,
// The secret generated when you ran: php artisan passport:install
'client_secret' => 'fx5I3bspHpnuqfHFtvdQuppAzdXC7nJclMi2ESXj',
'grant_type' => 'password',
'username' => 'johndoe@scotch.io',
'password' => 'secret',
'scope' => '*',
]
]);
// You'd typically save this payload in the session
$auth = json_decode( (string) $response->getBody() );
$response = $client->get('http://todos.test/api/todos', [
'headers' => [
'Authorization' => 'Bearer '.$auth->access_token,
]
]);
$todos = json_decode( (string) $response->getBody() );
$todoList = "";
foreach ($todos as $todo) {
$todoList .= "<li>{$todo->task}".($todo->done ? '✅' : '')."</li>";
}
echo "<ul>{$todoList}</ul>";
} catch (GuzzleHttp\Exception\BadResponseException $e) {
echo "Unable to retrieve access token.";
}
这有效,两个请求都给出了有效的响应。但是,当我将此代码放到新的react native应用程序中(当然是在javascript中)时,第一个请求返回一个200
并给了我一个客户端密码。
现在,当我进行第二次通话时,出现错误:401 Unauthorized
。我想知道这是否与CORS有关,还是我看错了方向?
答案 0 :(得分:-1)
不! 这不是CORS问题,您只是未经授权,请检查access_token是否有效且未过期。