阅读(4328) (9)

Laravel 8 授权时的重定向

2021-07-09 12:59:38 更新

客户端创建之后,可以使用客户端 ID 和生成的 code verifier 和 code challenge 来从你的应用程序请求授权码和访问令牌。首先,接入的应用程序需要向你应用程序的 /oauth/authorize 路由发出重定向请求:

Route::get('/redirect', function (Request $request) {
    $request->session()->put('state', $state = Str::random(40));

    $request->session()->put('code_verifier', $code_verifier = Str::random(128));

    $codeChallenge = strtr(rtrim(
        base64_encode(hash('sha256', $code_verifier, true))
    , '='), '+/', '-_');

    $query = http_build_query([
        'client_id' => 'client-id',
        'redirect_uri' => 'http://example.com/callback',
        'response_type' => 'code',
        'scope' => '',
        'state' => $state,
        'code_challenge' => $codeChallenge,
        'code_challenge_method' => 'S256',
    ]);

    return redirect('http://your-app.com/oauth/authorize?'.$query);
});