微信登录方式与PHP laravel框架快速集成
针对php语言laravel框架的用户,介绍了一种基于该框架的微信登录集成的简单方法。使用方法如下:
1.安装php_weixin_provider
Run composer要求项目下的第三方提供商/微信完成安装。安装成功后,php_weixin_provider的库文件应该在项目的供应商目录中可见:
2.配置微信登录的参数
有7个参数可以配置,即:
Client_id:微信官方账号对应创建的应用appid client _ secret:微信官方账号对应创建的应用app id重定向:微信授权成功后对应的回拨地址proxy_url:微信授权对应的代理服务地址(其功能可以通过阅读本文了解)设备:区别在于PC微信登录和手机微信登录。默认值为pc,如果是移动终端,可以设置为null state_cookie_name:授权链接会包含一个随机的状态参数,当微信被回调时会原封不动的返回。此时,可以通过验证状态参数是否与授权环节传递的参数相同来判断请求是否有效,从而防止CSRF攻击。在此方案中,状态参数将在授权时存储在cookie中,因此此参数用于指定存储在此状态参数中的cookie名称。默认值为wx_state_cookie state _ cookie _ time:指定wx _ state _ cookie的有效时间,默认值为5分钟。这七个参数可以通过两种方式设置。首先是将这些参数配置到。大写的env配置文件:
注:1。每个配置项大写,以WEIXIN_开头;2.前三个配置项与上述参数名称不完全一致。密钥对应于客户端标识,秘密对应于客户端秘密,重定向URI对应于重定向。3.其他与上面介绍的参数名称一致。
第二种是将这些参数配置到config/services.php文件中:
这样,每个配置项的名称都与上面描述的相同。
需要注意的事情:
因为php_weixin_provider是基于laravel/sociate实现的,所以要求必须配置client_id、client_secret和redirect,否则php_weixin_provider的实例化过程会出错。对于client_id和client_secret,我认为统一配置在一个地方是没有问题的,但是对于redirect,如果统一配置的话,可能并不能满足所有场景的要求,因为不是每个使用微信登录的地方,最后一个回调地址都是一样的;因此,建议先将重定向配置为有效或无效的非空回调地址;无论如何,以后使用php_weixin_provider时,可以在调用时更改此参数的值。
如果有proxy_url,也建议在公共场所配置;
因为state_cookie_name和state_cookie_time都有默认值,所以基本上不需要重新配置它们。设备可以在使用时指定。
所有配置参数都可以在使用时重新指定。
3.注册php_weixin_provider
在项目的config/app.php文件中,找到providers配置部分,并将以下代码添加到其配置数组中:
4.注册对第三方登录事件的监控
将以下代码添加到项目的app/providers/event service provider . PHP中:
Laravel框架整体上是一种IOC和事件驱动的思想。如果你熟悉js,你就会熟悉事件驱动和设计模式,你也会熟悉IOC (Control Inversion,也叫DI: Dependency Injection),这是理解步骤3和步骤4中配置作用的关键。
5.写微信登录界面
例子如下:
//使用代理跳转登录route:3360get ('/login ',function(){ returnsociat 33603360 with(' weixin ')-set proxy yurl(' http://proxy . your.com ')-setredirecturl(URL('/log });//使用代理跳转从手机微信登录route :3360 get(“/login 2”)。function(){ return sociate : with(' weixin ')-set proxy yurl(' http://proxy . your.com ')-set device(')-setRedirectUrl(URL('/log in/notify '))-redirect();});//登录route:3360get ('/login ',function(){ returnsociat33603360 with(' weixin ')-set redirecturl(URL('/log in/notify '))-通过微信从PC重定向(),无需代理跳转;});//登录route:3360get ('/login4 ',function(){ returnsociat33603360 with(' weixin ')-set device(')-setredirecturl(URL('/log in/notify ')-重定向而不进行代理跳转});带有(' weixin ')的社交名媛:返回一个php_weixin_provider的实例,即:
得到这个实例后,可以通过链式的方式调用它提供的所有公共方法,比如设置配置参数、设置setDevice等等。
6.写微信登录回拨界面
例子如下:
//login回调route : get('/log in/notify ',function(){ $ user=null;尝试{ $ user=sociate : with(' weixin ')-user();} catch(\ Exception $ e){ return ' get微信用户异常';}返回$ user-昵称;});用('微信')通过社交名媛:3360获取php_weixin_provider实例后,调用用户方法会自动用微信调用相关接口,并将微信返回值封装为一个对象返回。如果这个过程中有错误,就会以异常的形式抛出,比如状态参数验证失败、代码失败等。
返回的$user对象包含有效的属性:
总结:
该方案基于laravel/sociate实现,并发布给composer使用。Laravel/名媛是laravel官方提供的第三方登录模块,可以轻松集成大部分第三方平台的认证。目前正式提供很多第三方登录实现:https://socialiteproviders.github.io/.除了国外的脸书、谷歌、Github,国内的微信、微博、qq也有。刚开始的时候我也是用它官方默认的微信登录提供商,后来发现了以下问题:
1.不支持微信授权的代理;
2.PC端和移动端还是分两个项目做:
3.它封装的用户对象甚至不包含unionid
4.更改配置参数的方法很难使用:
因此,基于其官方微信登录提供商,根据我自己的想法,我重新实施了一个来解决我发现的这些问题。
版权声明:微信登录方式与PHP laravel框架快速集成是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

















