Laravel Socialite:如何在运行时更改redirect_uri?

问题描述 投票:0回答:2

是否可以在运行时更改config/services.php中设置的redirect_uri的值?

我尝试这样做:

返回 $socialite->driver('facebook')->redirectUrl(newUrl)->redirect();

但它会抛出一个错误,指出redirect_uri 应与 OAuth 对话框中的一致。进一步检查错误消息,redirect_uri 的值为空,显然,redirectUrl() 方法不起作用。

PS:

这是我使用的在composer.json 中定义的社交名流版本:

“laravel/社交名流”:“^2.0”

laravel-5 laravel-socialite
2个回答
4
投票

解决这个问题的方法是:

public function redirectToProvider($accountType, $provider)
{
    return Socialite::driver($provider)
        ->with(['redirect_uri' => "YOUR_NEW_URL"])
        ->stateless()
        ->redirect();
}

使用此方法,您可以覆盖http请求中的任何值(包括范围)。


0
投票

我正在使用

^5.9
版本的
laravel/socialite
,使用
redirectUrl()
按我的预期工作。我认为关键是你在重定向和获取用户时都必须使用这个方法,所以参数是相等的。

// Just redirecting
Socialite::driver('google')
            ->redirectUrl($redirectUrl)
            ->redirect();
// Fetching user
Socialite::driver('google')
                ->redirectUrl($redirectUrl)
                ->user();

此外,对于 Google Oauth,如果您刚刚添加了重定向 URL,您可能需要给它一些时间才能生效,至少 Google 管理面板中是这么说的。

© www.soinside.com 2019 - 2024. All rights reserved.