如何使用Laravel Passport为密码授予客户端创建令牌?

Mik*_*ike 9 php oauth laravel laravel-passport

我正在构建一个API,我正在使用Laravel Passport进行身份验证.

API正用于我们的移动应用程序,因此我们使用密码授予客户端.

一切都很好,用户可以登录以获取访问令牌.我们创建了一个允许用户注册的注册端点.我们现在还需要API来返回访问令牌.

浏览文档无法以编程方式创建访问令牌.

如何在控制器中为密码授予客户端创建访问令牌?我显然不想对我自己的API执行HTTP请求来获取它.

我知道我可以使用个人访问授权客户端并调用createToken用户模型,但这意味着访问令牌与不同的客户端相关联.这对我来说似乎不对.

San*_*tam 6

试试这个

class UserController extends Controller
{
    protected function login(Request $request)
    {

         $request->request->add([
            'grant_type'    => 'password',
            'client_id'     => '3',
            'client_secret' => '6BHCRpB4tpXnQvC1DmpT7CXCSz7ukdw7IeZofiKn',
            'scope' => '*'
        ]);

        // forward the request to the oauth token request endpoint
        $tokenRequest = Request::create('/oauth/token','post');
        return Route::dispatch($tokenRequest);
    }

}
Run Code Online (Sandbox Code Playgroud)


小智 0

我知道我可以使用个人访问授予客户端并在用户模型上调用 createToken,但这意味着访问令牌与不同的客户端关联

不确定你的意思,你能解释一下吗?

现在这并不理想,但您也许可以注入\League\OAuth2\Server\Grant\PasswordGrant并使用

respondToAccessTokenRequest(ServerRequestInterface $request 
                            ResponseTypeInterface $responseType,
                            \DateInterval $accessTokenTTL)
Run Code Online (Sandbox Code Playgroud)

您必须构建所有这些对象,但这是返回任何令牌信息的密码的唯一公共方法。