一个公众号实现两个多个网站自动登录

  • 内容
  • 评论
  • 相关

那么新的问题来了 如果我有两个站点,一个是主站 www.weixin.com 还有一个商城 shop.weixin.com 甚至还有个其它应用,比如 shequ.weixin.com, 怎么能做到都支持微信自动登录呢?

在微信的官方文档中有明确的说明
1、在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的开发者中心页配置授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加http://等协议头;
2、授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.htmlhttp://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.comhttp://music.qq.comhttp://qq.com无法进行OAuth2.0鉴权
3、如果公众号登录授权给了第三方开发者来进行管理,则不必做任何设置,由第三方代替公众号实现网页授权即可

也就意味着必须自己去实现(第三方平台必须支持类似接口),那么详细的教程来了:

先看结构图

小泥巴的博客

微信中间服务结构图.png

图示已经讲的很清楚了,具体我们再进一步细化

公众号授权回调域名

到微信公众号后台,开发-接口权限,找到『网页授权获取用户基本信息』设置好回调域名,比如你设置的是 open.weixin.com

shop.weixin.com 开发

直接根据官方文档进行请求,https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 微信并没有判断请求来源是否是回调域名,所以可以这样直接请求 REDIRECT_URI 参数应该是 open.weixin.com/wechat/callback 这个参数是回跳的关键参数,微信会检测此参数是否你在公众号后台设置的回调域名

授权回跳到 open.weixin.com/wechat/callback

此时你需要在 open.weixin.com 上开发中间服务 根据图示,完成鉴权和获取用户数据,并存储相应数据 完成用户数据读取和保存,就立即回跳 shop.weixin.com 怎么判断回跳地址?可以巧妙利用state参数,也可以修改REDIRECT_URI参数为open.weixin.com/wechat/callback?source=shop.weixin.com来为二跳做准备

回跳到shop.weixin.com

不建议直接带用户数据明文跳转,应该是把openid/state等参数跳回shop.weixin.com,然后shop.weixin.com根据openid/token向中间服务 open.weixin.com 获取用户数据

那么,同理 www.weixin.com shequ.weixin.com 等等都可以使用微信帐号自动登录了~

作者:daocatt
链接:http://www.jianshu.com/p/e788a14c0297
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

喜欢这篇文章吗,不妨分享给朋友们吧!

评论

0条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注