背景
最近手头一个项目需要实现用户在网站的第三方登录(微信和微博),后端框架laravel5.4。
实现过程以微信网页版第三方登录,其他于此类似,在此不做重复。
准备工作
网站应用微信登录是基于oauth2.0协议标准构建的微信oauth2.0授权登录系统。
在进行微信oauth2.在进行微信oauth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的appid和appcret,申请微信登录且通过审核后,可开始接入流程。
总结下来就是:
1.进入微信开放平台注册开发者账号
2.根据项目类型创建应用,再此我创建的是网站应用.
3.接入微信登陆功能,让用户可使用微信登录你的网站应用
4.获得appid和appctet
到此微信第三方登录的准备工作就完成了。
授权流程说明
1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
2. 通过code参数加上appid和appcret等,通过api换取access_token;
3. 通过acc赤壁赋ess_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
在框架中实现(laravel)
laravel socialite简介
除了传统的基于表单的登录认证外,laravel 宁波大学是几本还可以通过laravel socialite 提供 oauth 认证,目前支持的认证驱动包括 facebook、twitter、google、linkedin、github 和 bitbucket。
安装相关依赖
compor require laravel/socialite
安装weixin-web
compor require socialiteproviders/weixin-web
注意网站实现微信登录需要的依赖包为socialiteproviders/weixin-web,如果是手机端app那么可以用socialiteproviders/weixin。
shanlei@shanlei-lenovo-ideapad-110-15isk:/var/www/html/zslm_back$ compor arch socialiteproviders/weixinsocialiteproviders/weixin weixin oauth2 provider for laravel socialitesocialiteproviders/weixin-web weixin-web oauth2 provider for laravel socialitesocialiteproviders/weixin-web weixin-web oauth2 provider for laravel socialitesocialiteproviders/weixin weixin oauth2 provider for laravel socialite
相关配置
1. 设置app/config.php
添加providers:
'providers' => [socialiteproviders\manager\rviceprovider::class,],
添加alias:
'alias' => [ 'socialite' => laravel\socialite\facades\socialite::class, ],
2. 配置config/rvices.php
'weixinweb' => [ 'client_id' => env('weixin_key'), 'client_cret' => env('weixin_cret'), 'redirect' 幼儿园食谱图片=> env('weixin_宋江的军师歇后语redirect_uri'), ],3. 设置app/providers/eventrviceprovider.php
添加事件监听
u 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
<?php/** * created by phpstorm. * ur: shanlei * date: 1/6/2017 * time: 11:34 am */namespace app\http\controllers\auto\thirdlogin;u socialite;u illuminate\http\request;u app\http\controllers\controller;u socialiteproviders\weixinweb\provider;class weixincontroller extends controller{ public function redirecttoprovider(request $request) { return socialite::with('weixinweb')->redirect(); } public function handleprovidercallback(request $request) { $ur_data = socialite::with('weixinweb')->stateless()->ur(); dd($ur_data); }}访问auth/weixin,获文艺复兴时间得返回数据。
常见错误
1. 微信授权回调域不符(redirect_uri不符),参见下面规范:
2. 执行过程中出现一下错误:
exception ‘laravel\socialite\two\invalidstateexception’
in /example/vendor/laravel/socialite/src/two/abstractprovider.php:161
解决:
通过stateless()方法禁止会话状态验证
socialite::driver('weixinweb')->stateless()->ur()总结
以上所述是www.887551.com给大家介绍的laravel5实现微信第三方登录功能,希望对大家有所帮助
本文发布于:2023-04-06 16:37:39,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/44d915a38775a1f2f575b6409c776595.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:laravel5实现微信第三方登录功能.doc
本文 PDF 下载地址:laravel5实现微信第三方登录功能.pdf
| 留言与评论(共有 0 条评论) |