微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用数据库中的key和secret在laravel 8中实现Facebook登录

如何解决使用数据库中的key和secret在laravel 8中实现Facebook登录

我正在创建一个多供应商网络应用程序,我需要在其中为客户实现 login with Facebook。供应商可以拥有自己的域或子域,也可以拥有自己的客户。在网站中,我通过使用环境变量实现了 Facebook 登录代码如下。

facebook登录路径

Route::get('auth/facebook','FacebookController@redirectToFacebook');
Route::get('auth/facebook/callback','FacebookController@handleFacebookCallback');

在 config/services.PHP

'facebook' => [
    'client_id' => env('FACEBOOK_CLIENT_ID'),'client_secret' => env('FACEBOOK_CLIENT_SECRET'),'redirect' => env('FACEBOOK_CALLBACK_URL'),],

Facebook 控制器功能

public function redirectToFacebook()
{
    return Socialite::driver('facebook')->redirect();
}

public function handleFacebookCallback()
{
    try {
        $user = Socialite::driver('facebook')->user();
        $user_name = $user->getName();
        $user_email = $user->getEmail();
        $facebook_auth_id = $user->getId();
        /* other code */

    } catch (Exception $e) {
        return redirect()->route('login')->with(['error' => "facebook login Failed."]);
    }
}

但我想使用存储在数据库中的供应商的 Facebook 密钥和机密。我如何在这里使用动态变量来实现功能

解决方法

确保这些包应该包含在你的控制器中

use Laravel\Socialite\SocialiteManager;
use Socialite;
use Laravel\Socialite\Two\FacebookProvider;

在控制器中使用以下代码

public function redirectToFacebook(Request $request)
{
    $fb = $this->configDriver($request);
    return $fb->redirect();
}

private function configDriver(Request $request,$domain = '',$driver = 'facebook')
{
    $config['client_id'] = 'your_client_id';
    $config['client_secret'] = 'your_client_secret';
    $config['redirect'] = 'your_redirect_url';
    return Socialite::buildProvider(FacebookProvider::class,$config);
}

public function handleSocialCallback(Request $request,$driver = 'facebook')
{
    $usr = $this->configDriver($request)->stateless()->user();
    $name = $user->getName();
    $email = $user->getEmail();
    $facebook_id = $user->getId();
    /*save data in db*/
}
,

这是使用 Laravel Socialite 实现的。

https://github.com/jd-patel/laravel-social-login

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。