Socialite PHP 社交登录统一解决方案

云游道人 2025-12-22 20 阅读 0评论

该工具现已支持平台有:Facebook,Github,Google,Linkedin,Outlook,QQ,TAPD,支付宝,淘宝,百度,钉钉,微博,微信,抖音,飞书,Lark,豆瓣,企业微信,腾讯云,Line,Gitee,Coding。

版本要求 PHP >= 8.0.2 安装 composer require "overtrue/socialite" -vvv 使用指南 用户只需要创建相应配置变量,然后通过工具为各个平台创建认证应用,并轻松获取该平台的 access_token 和用户相关信息。工具实现逻辑详见参照各大平台 OAuth2 文档。 工具使用大致分为以下几步: 配置平台设置 创建对应平台应用 让用户跳转至平台认证 服务器收到平台回调 Code,使用 Code 换取平台处用户信息(包括 access_token)

authorize.php: 让用户跳转至平台认证


<?php


use Overtrue\Socialite\SocialiteManager;


$config = [

    'github' => [

        'client_id'     => 'your-app-id',

        'client_secret' => 'your-app-secret',

        'redirect'      => 'http://localhost/socialite/callback.php',

    ],

];


$socialite = new SocialiteManager($config);


$url = $socialite->create('github')->redirect();


return redirect($url);


callback.php:

<?php


use Overtrue\Socialite\SocialiteManager;


$config = [

    'github' => [

        'client_id' => 'your-app-id',

        'client_secret' => 'your-app-secret',

        'redirect' => 'http://localhost/socialite/callback.php',

    ],

];


$socialite = new SocialiteManager($config);


$code = request()->query('code');


$user = $socialite->create('github')->userFromCode($code);


$user->getId();        // 1472352

$user->getNickname();  // "overtrue"

$user->getUsername();  // "overtrue"

$user->getName();      // "安正超"

$user->getEmail();     // "anzhengchao@gmail.com"

...

配置 为每个平台设置相同的键值对后就能开箱即用:client_id, client_secret, redirect. 示例:

$config = [

  'weibo' => [

    'client_id'     => 'your-app-id',

    'client_secret' => 'your-app-secret',

    'redirect'      => 'http://localhost/socialite/callback.php',

  ],

  'facebook' => [

    'client_id'     => 'your-app-id',

    'client_secret' => 'your-app-secret',

    'redirect'      => 'http://localhost/socialite/callback.php',

  ],

];

自定义应用名 你可以使用任意你喜欢的名字对每个平台进行命名,比如说 foo, 采用别名的方法后需要在配置中多设置一个 provider 键,这样才能告诉工具包如何正确找到你想要的程序:


$config = [

  // 为 github 应用起别名为 foo

    'foo' => [

        'provider'    => 'github',  // <-- provider name

        'client_id'   => 'your-app-id',

        'client_secret' => 'your-app-secret',

        'redirect'    => 'http://localhost/socialite/callback.php',

    ],


    // 另外一个名字叫做 bar 的 github 应用

    'bar' => [

        'provider'    => 'github',  // <-- provider name

        'client_id'   => 'your-app-id',

        'client_secret' => 'your-app-secret',

        'redirect'    => 'http://localhost/socialite/callback.php',

    ],


    //...

];


$socialite = new SocialiteManager($config);


$appFoo = $socialite->create('foo');

$appBar = $socialite->create('bar');


扩展自定义服务提供程序 你可以很容易的从自定义的服务提供中创建应用,只需要遵循如下两点: 使用自定义创建器 如下代码所示,为 foo 应用定义了服务提供名,但是工具本身还未支持,所以使用创建器 extend(),以闭包函数的形式为该服务提供创建一个实例。

$config = [

    'foo' => [

        'provider' => 'myprovider',  // <-- 一个工具还未支持的服务提供程序

        'client_id' => 'your-app-id',

        'client_secret' => 'your-app-secret',

        'redirect' => 'http://localhost/socialite/callback.php',

    ],

];


$socialite = new SocialiteManager($config);


$socialite->extend('myprovider', function(array $config) {

    return new MyCustomProvider($config);

});


$app = $socialite->create('foo');


更多配置信息请前往仓库:https://github.com/overtrue/socialite


喜欢就支持以下吧
点赞 0

发表评论

快捷回复: 表情:
aoman baiyan bishi bizui cahan ciya dabing daku deyi doge fadai fanu fendou ganga guzhang haixiu hanxiao zuohengheng zhuakuang zhouma zhemo zhayanjian zaijian yun youhengheng yiwen yinxian xu xieyanxiao xiaoku xiaojiujie xia wunai wozuimei weixiao weiqu tuosai tu touxiao tiaopi shui se saorao qiudale qinqin qiaoda piezui penxue nanguo liulei liuhan lenghan leiben kun kuaikule ku koubi kelian keai jingya jingxi jingkong jie huaixiao haqian aini OK qiang quantou shengli woshou gouyin baoquan aixin bangbangtang xiaoyanger xigua hexie pijiu lanqiu juhua hecai haobang caidao baojin chi dan kulou shuai shouqiang yangtuo youling
提交
评论列表 (有 0 条评论, 20人围观)