admin管理员组

文章数量:1558102

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

微信网页授权文档 https://mp.weixin.qq/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);

 

本文标签: 网页Laravel