拉拉维尔 | 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_idredirect_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_IDLINKEDIN_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:cachephp artisan cache:clear非常重要

【讨论】:

以上是关于拉拉维尔 | LinkedIn 和 Socialite - 不传递参数的主要内容,如果未能解决你的问题,请参考以下文章

拉拉维尔 |大量数据的特殊验证

基于关系数据的查询 |拉拉维尔 5.4

数据库中存在名称?拉拉维尔

如何使用带有 Recaptcha 的 AJAX 发送表单? [拉拉维尔]

拉拉维尔。在具有关系的模型中使用 scope()

选择 2 不显示选定选项。 (拉拉维尔)