Laravel 社会化登录之微信网页授权登录

前端在授权微信登录时需要获取用户的微信信息,比如 openId ,头像等信息.

微信网页授权文档 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

前端在获取 code 后需要将 code 返回给开发者的服务器,开发者的服务器通过前端返回的 code 去微信服务器换取 access_token ,然后开发者服务器利用  access_token 和用户的 openid 拿到用户信息.

socialiteproviders 为 Laravel Socialite 提供了更多的第三方登录方式,基本上你需要的,都能在这里找到.

我们可以利用 微信的 Provider 实现我们的需求.

1. 安装微信 Provider 

composer require socialiteproviders/weixin

2. 配置

app/Providers/EventServiceProvider.php

.
.
protected $listen = [
    \SocialiteProviders\Manager\SocialiteWasCalled::class => [
        // add your listeners (aka providers) here
        'SocialiteProviders\Weixin\WeixinExtendSocialite@handle'
    ],
];
.
.

config/services.php

'weixin' => [
    'client_id' => env('WEIXIN_KEY'),
    'client_secret' => env('WEIXIN_SECRET'),
    'redirect' => env('WEIXIN_REDIRECT_URI')
],

.env

# 微信
WEIXIN_KEY=wxbde46abaa8d3xx
WEIXIN_SECRET=ae0059ed19c9367xxxx
WEIXIN_REDIRECT_URI=http://larxxx

3.使用示例

3.1 通过 code 获取微信用户信息

# 测试路由
Route::get('test', function () {
    $code = '081euRI705A3iF1MmoF70TNQI70euRIt';
    $driver = Socialite::driver('weixin');
    $response = $driver->getAccessTokenResponse($code);
    $driver->setOpenId($response['openid']);
    $oauthUser = $driver->userFromToken($response['access_token']);
    dd($oauthUser);
});

 

3.2 通过 access_token 和 open_id 获取微信用户信息

 这种方法时不建议使用.

$accessToken = 'ACCESS_TOKEN';
$openID = 'OPEN_ID';
$driver = Socialite::driver('weixin');
$driver->setOpenId($openID);
$oauthUser = $driver->userFromToken($accessToken);

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值