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

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

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

解决方案:

方法1:

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

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

f36d3533349c614b65d80c3ff893b5e4.png

异步代码:

ea1fc1fa5a6c3ff34474f8e8e4170027.png

方法2(推荐)

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

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

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

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

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

效果如图:

97057e5207a355a2b687676758171ee3.png

对比:

方法1:

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

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

方法2:

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

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

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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值