1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > php微信公众号绑定微信号 订阅号实现微信网页授权登陆(原创)

php微信公众号绑定微信号 订阅号实现微信网页授权登陆(原创)

时间:2019-06-26 06:04:43

相关推荐

php微信公众号绑定微信号 订阅号实现微信网页授权登陆(原创)

首先需要说明的是,普通的微信订阅号是不支持oauth2.0网页授权的。网上很多文章说通过微信开放平台的网站应用漏洞可以实现,但交了钱拿到认证后测试,发现并没什么卵用,跟很多网友反馈的一样,提示scope 权限不足。花钱的东西,谨慎尝试啊!

当然最后还是找到了解决方法,虽然不是很完美,但至少我的领导看后还是很欣然接受的。

解决方案:

方法1:

通过用户点击菜单,触发微信异步通知,然后获取用户信息,然后再把专属URL发给用户(也就是加上token的URL)

虽然订阅号没有oauth2.0网页授权,但是 ”获取用户基本信息“这个接口是有权限的。使用这个接口得用到openId,那怎么拿openId呢。其实用户在操作公众号时,公众号都相应的与绑定的服务器地址进行异步操作,比如点击菜单。此时我们就可以在异步方法里获取openId,同时也拿到了用户信息。虽然拿到了用户信息,但是新的问题就来了,既然是公众号与我们服务器进行异步操作,我们怎么知道服务器获取用户信息是对应哪个当前操作的用户,又如何引导他进入授权登陆后的页面。我目前想到的方法是,通过公众号消息响应的机制,把用户授权登陆后的URL(也就是带上token)返回给用户,用户点击后进入,间接实现授权登陆。效果如图所示:

异步代码:

方法2(推荐)

使用另一个服务号的oauth2.0网页授权接口实现订阅号授权登陆

这里可能就有小伙伴郁闷了,oauth2.0授权登陆不是得先关注公众号,那不是得让客户先关注服务号。其实不然,服务号的oauth2.0授权有两种方式。

第一种是静默授权,以snsapi_base为scope发起的网页授权,这种是最常见的方式,用户无需点击授权,但前提是得先关注公众号。

第二种是用户手动同意的授权,以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。

很显然,第二种符合我们的要求,毕竟所谓的授权登陆,无非就是获取用户信息,并引导其进入相应页面。开发步骤和代码跟服务号oauth2.0授权登陆一样的,只是请求的URL有所区别,具体的开放文档地址:https://mp./wiki?t=resource/res_main&id=mp1421140842

效果如图:

对比:

方法1:

优点:仅需要自身接口即可实现,不需要另一个微信服务号支持。

缺点:体验差,用户每次”授权“,都需要进行两部操作,先获取专用url(其实就是token),然后再点击url进入授权页面。

方法2:

优点:体验好,用户首次授权后,一段时间内再授权无需用户手动同意,体验跟静默授权一样。

缺点:成本较高,需要另一个服务号支持。

总结:很明显如果手头有服务号或者不介意在申请一个的,推荐使用方法2。当然如果对应体验不怎么敏感的,可以使用成本更低的方法1.

注释:本项目开发语音:PHP,微信开发插件:easywechat

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。