Я использую Laravel 5.4 и Passport 4. Я хочу использовать только First-Party-App
. Итак, как было предложено в этом ответе, я не хочу помещать ClientID и ClientSecret в приложение. Я вставил boot()
метод AuthServiceProvider
:
Passport::routes();
Passport::tokensExpireIn(Carbon::now()->addDays(30));
Passport::refreshTokensExpireIn(Carbon::now()->addDays(60));
Я добавил свой собственный маршрут в api.php
для входа в систему из приложения:
Route::post('login', 'Auth\LoginController@apiLogin');
Это мое действие:
public function apiLogin(Request $request)
{
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
// Authentication passed...
$user = Auth::user();
$token = $user->createToken('API Access')->accessToken;
return response()->json(["token_type" =>"Bearer","expires_in" => 2592000,"access_token" => $token]);
}
return response()->json(["error" => "invalid_credentials", "message" => "The user credentials were incorrect."], 401);
}
Есть ли способ получить количество секунд для expires_in
(30 дней => 2592000 с) или дату и время, чтобы я мог сделать расчет автоматически?
expiry
на$token
. Как выглядит ваш ответ JSON дляaccess_token
? Кроме того, если вы не можете получить к нему доступ, вы всегда можете сделать$expire = Carbon::now()->diffInSeconds(Carbon::now()->addDays({days}));
и вернуть его вместо2592000
, но это кажется долгим путем, чтобы получить{days} * 86400
- person Tim Lewis   schedule 02.08.2018$objToken = $user->createToken('API Access');
, и я сделал$expire = $objToken->token->expires_at->diffInSeconds(Carbon::now());
. ОднакоPassport::tokensExpireIn((new DateTime())->add(new DateInterval('P30D')));
не работает, похоже на ошибку в Laravel 5.4 из-за того, что многие обсуждения игнорируют ее. Шанс, что я хотел это от самого имущества... Но это уже другая проблема. В любом случае, я опубликую это как ответ, тогда я выберу его как ответ. - person KeitelDOG   schedule 03.08.2018Carbon
, поэтому вам не нужно использовать классыDateTime
иDateInterval
; по какой причине вы пытаетесь использовать этот конкретный код вместоCarbon::now()->addDays(30)
? Кроме того, продолжайте и опубликуйте самостоятельный ответ; Я просто указал вам правильное направление :) - person Tim Lewis   schedule 03.08.2018