
背景
最近手头一个项目需要实现用户在网站的第三方登录(微信和微博),后端框架laravel5.4。
实现过程以微信网页版第三方登录,其他于此类似,在此不做重复。
准备工作
网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。在进行微信OAuth2 .在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的应用编号和AppSecret,申请微信登录且通过审核后,可开始接入流程。
总结下来就是:
1.进入微信开放平台注册开发者账号2.根据项目类型创建应用,再此我创建的是网站应用.3.接入微信登陆功能,让用户可使用微信登录你的网站应用4.获得应用编号和AppSectet
到此微信第三方登录的准备工作就完成了。
授权流程说明
1.第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据密码参数;2.通过密码参数加上应用编号和密钥等,通过应用程序接口换取access _ token3。通过访问令牌进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
在框架中实现(拉弗尔)
社交名媛简介
除了传统的基于表单的登录认证外拉威尔还可以通过社交名媛提供OAuth认证,目前支持的认证驱动包括脸书、推特、谷歌、领英、微博和比特桶。
安装相关依赖
作曲家需要拉弗尔/社会名流
安装微信-网络
作曲家需要社交提供者/微信-网络
注意网站实现微信登录需要的依赖包为社交提供者/微信-网络,如果是手机端应用那么可以用社交提供者/微信。
[电子邮件受保护]:/var/www/html/zslm _ back $ composer搜索社交提供商/微信微信oauth 2 Laravel社交提供商/微信-Web Weixin-Web oauth 2 Laravel社交提供商/微信微信oauth 2 Laravel社交提供商/微信Weixin oauth 2 Laravel社交提供商相关配置
1.设置app/config.php
添加提供商:
providers '=[socateproviders Manager service providers :3360类,],添加别名:
别名=[' sociate '=Laravel sociate Facades sociate : class,],2 .配置config/services.php
WEIXIN web '=[' client _ id '=env(' WEIXIN _ KEY '),' client _ SECRET '=env(' WEIXIN _ SECRET '),' REDIRECT '=env(' WEIXIN _ REDIRECT _ URI '),],3 .设置应用/提供商/事件服务提供商。服务器端编程语言(Professional Hypertext Preprocessor的缩写)
添加事件监听
使用社交提供程序管理器社交被调用;受保护的$ listen=[' sociateproviders Manager sociate被调用'=[' sociateproviders WeixinWeb [电子邮件保护]',],];4.添加路由
路由: get(' auth/weixin ',' Auto ThirdLogin [email protected]');路由: get(' auth/weixin/callback ',' Auto ThirdLogin [email protected]');5.编写微信滚轮
?php/** *由PhpStorm创建。*用户:雷珊*日期: 1/6/2017 *时间: 11:34AM */命名空间应用 Http 控制器自动第三方登录;使用名媛;使用照明 Http 请求使用app Http Controller Controller;使用社交网络提供者微信网络提供者;类weixinctorr扩展了控制器{公共函数redirectto提供程序(Request $ Request){ return sociate :3360与(' weixin web ')-redirect();}公共函数handleProviderCallback(Request $ Request){ $ user _ data=sociate :3360与(' weixin web ')-无状态()-用户();DD($ user _ data);}}访问auth/微信,获得返回数据。
常见错误
1.微信授权回调域不符(重定向_uri不符),参见下面规范:
2.执行过程中出现一下错误:
异常' Laravel sociate Two invalidstatexception '在/示例/供应商/Laravel/sociate/src/Two/abstract provider . PHP :161
解决方法:
无状态()方法禁止会话状态验证
社交名媛:驱动程序(' weixin web ')-无状态()-用户()摘要
如上所述,边肖推出的laravel5实现了微信的第三方登录功能,希望对大家有所帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!