Я пытаюсь создать логин с паспортом, используя токен доступа и refre sh токен:
class AuthController extends Controller
{
const REFRESH_TOKEN = 'refreshToken';
public function login(Request $request)
{
$request->validate([
'username' => 'required|email',
'password' => 'required',
]);
return $this->proxy('password', [
'username' => $request->username,
'password' => $request->password,
]);
}
public function proxy($grantType, array $data = [])
{
$data = array_merge($data, [
'client_id' => config('services.passport.client_id'),
'client_secret' => config('services.passport.client_secret'),
'grant_type' => $grantType
]);
$response = Request::create(route('passport.token'), 'POST', $data);
$data = app()->handle($response);
return $data->refresh_token;
// Create a refresh token cookie
Cookie::queue(
self::REFRESH_TOKEN,
$data->refresh_token,
864000, // 10 days
null,
null,
false,
true // HttpOnly
);
return [
'access_token' => $data->access_token,
'expires_in' => $data->expires_in
];
}
}
Что происходит:
Когда я return
или dd()
$data
в методе proxy()
, я возвращаю правильные данные на вкладке сети google chromes:
{token_type: "Bearer", expires_in: 600,…} access_token: "right_access_token" expires_in: 600 refresh_token: "right_refresh_token" token_type: "Bearer"
Когда я пытаюсь получить $ data-> refresh_token, я получаю эту ошибку:
Неопределенное свойство: Illuminate \ Http \ Response :: $ refresh_token
Редактировать 1
Я также пробовал: return (array)json_decode($data, true);
и все, что я получаю, - это пустой массив. Без (массива) нет ничего.