微信订阅号里实现oauth授权登录,并获取用户信息 (完整篇)

原创
2016/03/14 23:56
阅读数 1.3W

    前段时间一直有人问我有关订阅号实现的oauth授权登录的问题,之前一篇写的比较简单,很多人不明白。

众所周知,微信公众号分订阅号、服务号、企业号;每个号的用途不一样,接口开放程度也不一样。

微信还有个扯淡的开放平台,号称统一管理众多公众号的。反正都是交钱的功能多,两个平台把我弄得傻傻分不清楚。

切入正题,上上个公司有个微信订阅号,内嵌了一个微网站,并且要实现授权登录。

这个授权登录的接口只有认证的服务号才能调用,订阅号要实现这个功能只能另辟蹊径;


这个是微信公众号的api地址

http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html


.这个是开放平台的api地址

https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=&lang=zh_CN


需要在开放平台交300元认证费开通相关功能,并创建网站应用,等待通过


如果直接使用开放平台的微信登录功能,只能出现基于二维码的扫一扫页面,并且只适用于pc端的微信登录。


开放平台官方提供的认证地址是:

https://open.weixin.qq.com/connect/qrconnect?……

他会生成一个二维码需要微信扫描登陆后获取信息,这和微信内自登陆相差太远


经过不断的摸索,发现一个小捷径:即更换上面的认证地址为:https://open.weixin.qq.com/connect/oauth2/authorize?……

目前这个方法微信没写入开放平台的官方文档,但是却可以实现订阅号的微信内自登陆,不过和服务号的OAuth不同的是,这种方式是登陆操作(snsapi_login必须只能设置成这个),不是直接的获取操作(snsapi_base,snsapi_userinfo)


参考微信订阅号:e城e乡


long long ago 实现的功能,目前仍然可行。微信开发我只做过这个,其他的不一定会,^_^!


展开阅读全文
打赏
4
11 收藏
分享
加载中

引用来自“祖国的花朵QQQ”的评论

你好,现在有的用户可以通过开放平台授权登录成功,有的用户显示“此公众号并没有这些scope的权限,错误码:10005”,如何解决

回复@祖国的花朵QQQ : 你好,问题解决了吗,求教
2018/05/10 12:17
回复
举报
你好,现在有的用户可以通过开放平台授权登录成功,有的用户显示“此公众号并没有这些scope的权限,错误码:10005”,如何解决
2018/03/21 19:17
回复
举报
不知道现在还可以用这个方法吗?
2018/03/15 13:18
回复
举报

引用来自“ghostsf”的评论

https://open.weixin.qq.com/connect/oauth2/authorize?
这个认证地址目前还有用?通过这个获得的openid也只是你在开放平台上创建的网站应用的专属openid吧,与订阅号的用户openid是不一样的吧。那这还不如直接用认证服务号的auth2授权呢。获得的openid不一样那还是不能确认当前登录的是谁的(能获得的只是用户信息,但是通过这些信息来判断肯定是不靠谱的),只能通过unionid来判别身份。
那要通过unionid来判断的话,必须要在开放平台上绑定微信公众平台,也只有通过unionid机制,才能实现订阅号auth授权后并且能获得其自己的用户openid

引用来自“mosaic101”的评论

该方法还是有效的;
openid是公众号的属性(与开放平台无关),不绑定也有对应的openid,你说openid是否一样?
至于你说的为什么不用服务号,你只是站在自己角度看问题了(最大的原因是服务号一个月推送的次数只有可怜的4次,订阅号与服务号的区别请参考公众号说明);
对同一个微信开放平台下的不同应用,unionid是相同的,若出现多个网站应用,openid有重复的可能;
你是说开放平台的接口参数里的appid写订阅号的appid吗?然后可以通过此能获得订阅号的用户openid?有这样的漏洞?
下面说的直接用服务号授权不是说要改用服务号,而是说借用服务号的auth授权获取一下用户信息,但是获取到的openid还是服务号的。
出现多个网站应用,openid有重复的可能?什么意思?
2016/12/30 16:32
回复
举报
mosaic101博主

引用来自“phpworkcn”的评论

地址不能用:https://open.weixin.qq.com/connect/oauth2/authorize? 能否贴下完整的地址.不是认证失败就是scrop错误

引用来自“mosaic101”的评论

你开通开放平台了吗?

引用来自“phpworkcn”的评论

微信订阅号设置不了授权回掉页,本身是没有办法获取openid的。
走开放平台才能获取,完整地址开放平台api写的很清楚
2016/12/27 20:18
回复
举报

引用来自“phpworkcn”的评论

地址不能用:https://open.weixin.qq.com/connect/oauth2/authorize? 能否贴下完整的地址.不是认证失败就是scrop错误

引用来自“mosaic101”的评论

你开通开放平台了吗?
微信订阅号设置不了授权回掉页,本身是没有办法获取openid的。
2016/12/27 20:14
回复
举报

引用来自“phpworkcn”的评论

地址不能用:https://open.weixin.qq.com/connect/oauth2/authorize? 能否贴下完整的地址.不是认证失败就是scrop错误

引用来自“mosaic101”的评论

你开通开放平台了吗?
是用那个openid,订阅号?开发平台?
2016/12/27 20:08
回复
举报
mosaic101博主

引用来自“phpworkcn”的评论

地址不能用:https://open.weixin.qq.com/connect/oauth2/authorize? 能否贴下完整的地址.不是认证失败就是scrop错误
回调地址当然是自定义的
2016/12/27 16:41
回复
举报
mosaic101博主

引用来自“phpworkcn”的评论

地址不能用:https://open.weixin.qq.com/connect/oauth2/authorize? 能否贴下完整的地址.不是认证失败就是scrop错误
你开通开放平台了吗?
2016/12/27 16:41
回复
举报
redirect_uri 微信入口那里填写,还是自定义
2016/12/27 08:22
回复
举报
更多评论
打赏
21 评论
11 收藏
4
分享
返回顶部
顶部