社交媒体登录认证提供者大全 —— Socialite Providers,支持微博、微信、QQ等

社交媒体登录

1、简介

Socialite Providers是一个扩展自Laravel Socialite的OAuth 1 & 2 包集合。

其中的Manager包使用观察者模式来扩展Socialite,这种机制允许除了Laravel Socialite提供的认证提供者之外的多个其它提供者被使用,且只有添加到监听器的提供者被使用。

2、GitHub

https://github.com/SocialiteProviders

3、优点

  • 可以访问Manager加载的所有认证提供者
  • 直到Socialite被调用时提供者才会实例化
  • 支持覆盖当前认证提供者
  • 支持创建新的认证提供者

4、认证提供者

目前Socialite Providers支持使用83种社交媒体进行第三方登录认证:

5、使用示例

新浪微博(Weibo)

使用如下Composer命令安装依赖:

composer require socialiteproviders/weibo

注册服务提供者(同时注释掉原有的Socialite提供者):

//Laravel\Socialite\SocialiteServiceProvider::class,
SocialiteProviders\Manager\ServiceProvider::class,

添加Socialite门面(如果已有略过本操作):

'Socialite' => Laravel\Socialite\Facades\Socialite::class,

添加事件监听器(App/Providers/EventServiceProvider):

protected $listen = [
    'SocialiteProviders\Manager\SocialiteWasCalled' => [
        'SocialiteProviders\Weibo\WeiboExtendSocialite@handle',
    ],
];

去新浪微博开放平台(http://open.weibo.com/)创建一个新的网站应用以获取相应的App Key和App Secret。需要注意的是不比GitHub,新浪微博需要创建的网站应用对应网站在外网可以访问。

然后在配置文件app/services.php中添加weibo配置项:

'weibo' => [
    'client_id' => 'your weibo app App Key',
    'client_secret' => 'your weibo app App Secret',
    'redirect' => 'http://laravel.app:8000/auth/weibo/callback'
]

接下来我们要对AuthController略作修改:

public function redirectToProvider(Request $request,$service)
{
    return Socialite::driver($service)->redirect();
}

public function handleProviderCallback(Request $request,$service)
{
    $user = Socialite::driver($service)->user();
    dd($user);
}

以支持多种不同认证提供者的切换。

最后需要修改认证路由规则如下:

Route::get('auth/{service}', 'Auth\AuthController@redirectToProvider');
Route::get('auth/{service}/callback', 'Auth\AuthController@handleProviderCallback');

至此就可以在浏览器中访问http://laravel.app:8000/auth/weibo进行测试了。

微信、QQ及其它社交媒体第三方登录认证与此类似,不再赘述。

学院君 has written 883 articles

Laravel学院院长,终身学习者

积分:100062 等级:P12 职业:码农 城市:杭州

38 条回复

  1. 章遥 章遥 says:
    院长大人,想问下,我用pc端的用的是weixin-web,手机端浏览器浏览的时候Scope参数错误或者没有Scope权限,请我该怎么没做?
  2. 章遥 章遥 says:
    大哥,你这个是怎么解决的?
  3. 章遥 章遥 says:
    @ 陆安民 想问下,比如我是手机端的网页,那我是用weixin么?weixin web无效
  4. huihua huihua says:
    你好,请问解决了吗?我也遇到这个问题了!
  5. 叶萧 叶萧 says:
    Laravel \ Socialite \ Two \ InvalidStateException No message 。登陆后获取到code 报这个错是哪里问题
  6. laravel小生 laravel小生 says:
    院长大人,我的QQ登录报错cURL error 60: SSL certificate problem: unable to get local issue。我加了ssl证书,但似乎不管作用
  7. laravel小生 laravel小生 says:
    @ 张功新 http://或者www没加,理论上是这样的
  8. 风弟弟 风弟弟 says:
    学院君,我的各项数据都是正确,是怎么回事呢?麻烦您了
  9. 风弟弟 风弟弟 says:
    用Weixin Web登录时,报这个错,该怎么解决呢?学院君: MissingConfigException in SocialiteWasCalled.php line 174: Configuration for WEIXINWEB_KEY is missing. There is no services entry for weixinweb

登录后才能进行评论,立即登录?