拉拉维尔 | LinkedIn 和 Socialite - 不传递参数
Posted
技术标签:
【中文标题】拉拉维尔 | LinkedIn 和 Socialite - 不传递参数【英文标题】:Laravel | LinkedIn and Socialite - Not passing parameters 【发布时间】:2018-05-11 05:49:40 【问题描述】:我在 Laravel 上遇到社交名流问题,我想在我的网站上添加一个 LinkedIn 登录,我已经添加了一个 100% 工作的 Twitter 登录。我的问题是,当我执行 return Socialite::driver('linkedin')->redirect();
时,它会将我重定向到这样的链接:
https://www.linkedin.com/oauth/v2/authorization?client_id=&redirect_uri=&scope=r_basicprofile+r_emailaddress&response_type=code&state=XXX
我收到一个错误,因为如您所见,该 URL 没有 client_id 和 redirect_uri 参数。 如果我手动拥有它们,一切正常。我也检查了我的 .env 文件、services.php 和 SocialAuthController .. 我不知道.. 这是我的 .env 文件:
LINKEDIN_ID=XXX123XXX123XXX
LINKEDIN_SECRET=XXX456XXX456XXX
我的服务文件:
'linkedin' => [
'client_id' => env('LINKEDIN_ID'),
'client_secret' => env('LINKEDIN_SECRET'),
'redirect' => env('APP_URL') . '/oauth/linkedin/callback',
],
我的 SocialAuthController:
public function redirectToProvider($driver)
if ($driver === 'linkedin')
return Socialite::driver('linkedin')->redirect();
最后是我的路线:
Route::get('auth/social', 'Auth\SocialAuthController@show')->name('social.login');
Route::get('login/driver', 'Auth\SocialAuthController@redirectToProvider')->name('social.oauth');
Route::get('login/driver/callback', 'Auth\SocialAuthController@handleProviderCallback')->name('social.callback');
我为 Twitter 登录做了所有这样的事情,而且效果很好..
【问题讨论】:
在添加LINKEDIN_ID
和LINKEDIN_SECRET
之前是否运行php artisan config:cache
?试试cache:clear
。有效吗?
在编辑 .env 文件后也总是重新运行 php artisan serve
@DharmaSaputra 非常感谢!我正在处理这个,php artisan config:cache 重新加载了我所有的配置,谢谢!
【参考方案1】:
这是我的解决方案:
web.php
Route::get('/redirect', 'Auth\LoginController@redirectToProvider');
Route::get('/callback', 'Auth\LoginController@handleProviderCallback');
Route::get('/shopping', 'GoogleShopping\GShoppingController@index');//redirect to home
config/services.php
'google' => [
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_APP_SECRET'),
'redirect' => env('GOOGLE_REDIRECT_URL'),//it must be same the home url
]
Controllers/Auth/LoginController.php
try
$user = Socialite::driver('google')->user();
catch (\Exception $e)
return view('/');
return redirect()->to('/shopping');
清理缓存php artisan config:cache
和php artisan cache:clear
非常重要
【讨论】:
以上是关于拉拉维尔 | LinkedIn 和 Socialite - 不传递参数的主要内容,如果未能解决你的问题,请参考以下文章