laravel-实现第三方github登录

Posted 花衣终会凋零,但愿余香缠绕指间

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel-实现第三方github登录相关的知识,希望对你有一定的参考价值。

1.laravel官方提供的第三方登录

1.2第三方composer登录参考资料

链接 链接 链接 链接 中文文档
packagist 参考博客 参考博客 参考博客 中文文档

1.3github设置

找到 OAuth Apps

2.使用composer安装依赖

composer require overtrue/socialite

config/services.php中加入配置项

#需要什么加什么这个扩展包支持好多家的登陆
    \'github\' => [
        \'client_id\'     => \'your-app-id\',
        \'client_secret\' => \'your-app-secret\',
        \'redirect\'      => \'http://localhost/socialite/callback.php\',#登陆成功后要跳转的地址
    ],

    \'weibo\' => [
        \'client_id\'     => \'your-app-id\',
        \'client_secret\' => \'your-app-secret\',
        \'redirect\'      => \'http://localhost/socialite/callback.php\',
    ],
    \'qq\' => [
        \'client_id\'     => \'your-app-id\',
        \'client_secret\' => \'your-app-secret\',
        \'redirect\'      => \'http://localhost/socialite/callback.php\',
    ],

路由设计

Route::any(\'github\',\'Admin\\GithubController@login\');#增加github登录的功能
Route::any(\'github/index\',\'Admin\\GithubController@index\');#增加github登录的功能

controller代码

  public function login()
    {
        $socialite = new SocialiteManager(config[\'github\']);
        $response = $socialite->driver(\'github\')->redirect();

        return $response;// or $response->send();
    }

    public function index()
    {
        $socialite = new SocialiteManager(config[\'github\']);
        $user = $socialite->driver(\'github\')->user();

//        $user->getId();        // 1472352
//        $user->getNickname();  // "overtrue"
//        $user->getUsername();  // "overtrue"
//        $user->getName();      // "安正超"
//        $user->getEmail();     // "anzhengchao@gmail.com"
//        $user->getProviderName(); // GitHub
        $is_null = User::where(\'github_email\', $user->getEmail())->first();

        if (empty($is_null)) {
            $user = User::create([\'github_email\' => $user->getEmail()]);
            session()->put(\'user\', $is_null);
            return \\redirect(\'admin/index\');
        } else {
            session()->put(\'user\', $is_null);
            return \\redirect(\'admin/index\');
        }
    }

curl解决方案
https://curl.haxx.se/docs/caextract.html
2.带补充现有未解决的bug

以上是关于laravel-实现第三方github登录的主要内容,如果未能解决你的问题,请参考以下文章

Laravel实现第三方登陆(演示github登陆)

Web 三方登录实现(基于OAuth2.0,包含Github和QQ登录)

[Next] Next.js+Nest.js实现GitHub第三方登录

如何设计 QQ微信微博Github 等等,第三方账号登陆 ?(附表设计)

django实现github第三方本地登录

安卓Android第三方登录-QQ登录