Паспорт Laravel создать токен и обновить токен - PullRequest
0 голосов
/ 08 июля 2019

Я использую Laravel и паспорт в своем проекте.В моем проекте пользователи могут получить токен двумя способами.Сначала с именем пользователя и паролем, что все в порядке по паспорту.Во-вторых, с кодом подтверждения, отправленным с SMS, что это моя проблема.

Я попробовал метод createToken(), но он создаст персональный токен без токена обновления и Мне нужно создать токен с токеном обновления и указать клиентидентификатор в контроллере (без HTTP-запроса).

$user = App\User::find(1);
// Creating a token without scopes...
$token = $user->createToken('Token Name')->accessToken;

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Я нашел пакет и использую его https://github.com/qiutuleng/laravel-passport-phone-verification-code-grant

Это хорошо.

0 голосов
/ 09 июля 2019

Создание нового контроллера AccessTokenController , который расширяет \ Laravel \ Passport \ Http \ Controllers \ AccessTokenControlle

<?php

namespace App\Http\Controllers;

use App\User;
use Exception;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use League\OAuth2\Server\Exception\OAuthServerException;
use Psr\Http\Message\ServerRequestInterface;
use Response;

class AccessTokenController extends \Laravel\Passport\Http\Controllers\AccessTokenController
{
    public function issueToken(ServerRequestInterface $request)
    {
        try {
            //get username (default is :email)
            $username = $request->getParsedBody()['username'];

            //get user
            $user = User::where('email', '=', $username)->firstOrFail();

            //issuetoken
            $tokenResponse = parent::issueToken($request);

            //convert response to json string
            $content = $tokenResponse->getBody()->__toString();

            //convert json to array
            $data = json_decode($content, true);

            if(isset($data["error"]))
                throw new OAuthServerException('The user credentials were incorrect.', 6, 'invalid_credentials', 401);

            //add access token to user
            $user = collect($user);
            $user->put('access_token', $data['access_token']);
            $user->put('expires_in', $data['expires_in']);
            $user->put('refresh_token', $data['refresh_token']);

            return Response::json(array($user));
        }
        catch (ModelNotFoundException $e) { // email notfound
            //return error message
        }
        catch (OAuthServerException $e) { //password not correct..token not granted
            //return error message
        }
        catch (Exception $e) {
            ////return error message
        }
    }
}

Вы можете создать client_id, используя следующую команду

php artisan passport:client
...