laravel5实现微信第三方登录功能
admin
2023-02-12 06:40:06
0

背景

最近手头一个项目需要实现用户在网站的第三方登录(微信和微博),后端框架laravel5.4。

实现过程以微信网页版第三方登录,其他于此类似,在此不做重复。

准备工作

网站应用微信登录是基于OAuth3.0协议标准构建的微信OAuth3.0授权登录系统。
在进行微信OAuth3.在进行微信OAuth3.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程。

总结下来就是:

1.进入微信开放平台注册开发者账号
2.根据项目类型创建应用,再此我创建的是网站应用.
3.接入微信登陆功能,让用户可使用微信登录你的网站应用
4.获得AppID和AppSectet

到此微信第三方登录的准备工作就完成了。

授权流程说明

1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;
3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

laravel5实现微信第三方登录功能

在框架中实现(laravel)

Laravel Socialite简介

除了传统的基于表单的登录认证外,Laravel 还可以通过Laravel Socialite 提供 OAuth 认证,目前支持的认证驱动包括 Facebook、Twitter、Google、LinkedIn、GitHub 和 Bitbucket。

安装相关依赖

composer require laravel/socialite

安装weixin-web

composer require socialiteproviders/weixin-web

注意网站实现微信登录需要的依赖包为socialiteproviders/weixin-web,如果是手机端App那么可以用socialiteproviders/weixin。

shanlei@shanlei-Lenovo-ideapad-110-15ISK:/var/www/html/zslm_back$ composer search socialiteproviders/weixin
socialiteproviders/weixin Weixin OAuth3 Provider for Laravel Socialite
socialiteproviders/weixin-web Weixin-Web OAuth3 Provider for Laravel Socialite
socialiteproviders/weixin-web Weixin-Web OAuth3 Provider for Laravel Socialite
socialiteproviders/weixin Weixin OAuth3 Provider for Laravel Socialite

相关配置

1. 设置app/config.php

添加providers:

'providers' => [
SocialiteProviders\Manager\ServiceProvider::class,
],

添加aliases:

'aliases' => [
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
],

2. 配置config/services.php

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

3. 设置app/Providers/EventServiceProvider.php

添加事件监听

use SocialiteProviders\Manager\SocialiteWasCalled;
protected $listen = [
'SocialiteProviders\Manager\SocialiteWasCalled' => [
'SocialiteProviders\WeixinWeb\WeixinWebExtendSocialite@handle',
],
];

4. 添加路由

Route::get('auth/weixin', 'Auto\ThirdLogin\WeixinController@redirectToProvider');
Route::get('auth/weixin/callback','Auto\ThirdLogin\WeixinController@handleProviderCallback');

5. 编写WeixinController

redirect();
}
public function handleProviderCallback(Request $request)
{
$user_data = Socialite::with('weixinweb')->stateless()->user();
dd($user_data);
}
}

访问auth/weixin,获得返回数据。

laravel5实现微信第三方登录功能

常见错误

1. 微信授权回调域不符(redirect_uri不符),参见下面规范:

laravel5实现微信第三方登录功能

2. 执行过程中出现一下错误:

exception 'Laravel\Socialite\Two\InvalidStateException' 
in /example/vendor/laravel/socialite/src/Two/AbstractProvider.php:161

解决:

通过stateless()方法禁止会话状态验证

Socialite::driver('weixinweb')->stateless()->user()


您可能感兴趣的文章:
  • PHP后台实现微信小程序登录

  • 详解Vue微信授权登录前后端分离较为优雅的解决方案

  • vue 微信授权登录解决方案

  • 一步步教会你微信小程序的登录鉴权

  • 微信小程序获取手机号授权用户登录功能

  • java实现微信小程序登录态维护的示例代码

  • 详解微信小程序 登录获取unionid

  • 关于在vue-cli中使用微信自动登录和分享的实例

  • 微信小程序 新建登录页并实现tabBar隐藏

  • 微信小程序中做用户登录与登录态维护的实现详解

  • 第三方网站微信登录java代码实现

  • 微信小程序实战之登录页面制作(5)

文章同步发布: https://www.geek-share.com/detail/2755097818.html


相关内容

热门资讯

日本正式决定设立国家情报局:系... 据凤凰卫视报道,日本政府7月24日正式决定设立国家情报局,计划于31日召开首次国家情报会议。这是日本...
伍斌任福建省副省长 据“新福建”客户端消息,7月24日,福建省十四届人大常委会第二十三次会议闭幕。会议表决通过了有关人事...
滚筒洗衣机脱水转不起来 滚筒洗衣机脱水转不起来:1、洗衣机顶盖的安全开关损坏。洗衣机在脱水的过程属于高速运作的机械运动。在脱...
洗衣机甩干桶嗡嗡响转不起来 洗衣机甩干桶嗡嗡响转不起来1、可能是洗衣机甩干桶下面的相关轴承长时间使用,缺乏润滑油导致的。2、可能...
不平衡滚筒洗衣机脱水转不起来 不平衡滚筒洗衣机脱水转不起来洗衣机不脱水时,首先检查洗衣机内是否有水。如果有水,首先打开排水阀检查里...
洗衣机脱水桶转不起来 1、有可能是因为洗衣机的内筒当中所放置的衣物过多了导致的。2、还有可能是因为电压不正常导致的。3、也...
西门子洗衣机滚筒转不起来 西门子洗衣机滚筒转不起来可能是以下几种原因:电压过低,导致滚筒洗衣机转不动;洗涤的物品太多会导致滚筒...
禹联科技取得一体式高强显示器框... 国家知识产权局信息显示,杭州禹联科技有限公司取得一项名为“一种一体式高强显示器框架”的专利,授权公告...
刚拿到菲尔兹奖,他现场宣布加入... (来源:机器之心) 编辑|杜伟、山辉 当地时间 7 月 23 日 12 点,费城宾夕法尼亚会议中心 ...
《成都声明》勾勒亚太数智合作新... 《成都声明》勾勒亚太数智合作新蓝图 7月23日,参会代表在2026年亚太经合组织(APEC)数字和...