关于微信公众号的一些问题

一、先说说公众号转发地址的配置问题

这个位置的服务器配置填写的url要能浏览器访问的,也就是必须是通的,其次,代码开始部分必须有验证逻辑

即:

在配置上面的url的时候,微信会发起验证,验证里面有个叫echostr的参数,要原样,注意,是原样打印出来。

也就是检测到有echostr这个参数的时候,就什么都不做,直接把echostr的值输出出去就好了。

否则会验证不通过。

其次,配置url位置的上面有个配置IP地址的选项,就是在AppID和APPSecret的下面。

要配置的url的域名所在的真实IP地址要放到IP白名单里才能正确获得access_token

这里还有一个要注意的,如果是使用公众号的AppID和AppSecret来实现微信分享功能,

那么也要把相应的服务器的IP地址放到白名单里。

而且,如果是nginx反向代理的,那么就要把被代理的服务器的IP地址放到白名单里才行。

反向代理的情况,入口服务器的IP地址感觉可以不放。

 

二、接下来说union_id的问题

  对于微信用户来说,union_id才是用户真正的唯一id。

  openid的话,同一用户针对不同应用,不同公众号都是不同的。

  也就是说,同一用户在不同应用或者微信号里的union_id总是相同的,而openid则一定不同。

  这样如果有不同的公众号,那么就可以用union_id来标识同一用户了。

  这里有一个要注意的地方,如果只有一个公众号,

  那么在获取用户信息的时候,是没有union_id的属性的。

  也就是说,union_id是在两个或多个公众号绑定,

  或者公众号和微信应用绑定以后,才会出现在用户信息里的属性。

 

12月14日补充


 

三、关于公众号网页授权的一些流程注意事项

问题1.引导页面

  有个很多人在介绍公众号获取网页授权的流程里,

  在介绍“引导用户进入授权页面”的时候,都是一句话带过。

  这一点让我费解了很久。。很久。。有时候甚至忍不住想,特么倒是说怎么引导啊。

  最开始我想的一直是,在某个地方配置个url,然后在用户关注有动作的时候微信会自动转发 。

  所以,我就一遍一遍找哪里有这个配置,或者哪个文章提到这个细节。

  然而,毫无例外,所有教程里都是一句话带过,引导用户进入授权页面。。。

  emmmmmmmm。。。。。。。有句mmp不知当讲不当讲。。。。

实际情况(目前是猜测,但应该八九不离十了):

  在接口权限里,进入网页授权页面的配置页(其实目前是在公众号设置 -> 功能设置),修改网页授权域名。

  1.首先说下授权域名的问题,为什么说是域名呢,因为这将限定了,凡是会弹窗告诉微信用户,

    要授权才能使用的某个链接,都必须以该域名开头。

  2.我们要授权的网页或者说接口,只要分布在授权域名下就可以了。可以有不同的入口。

    共同点是,都要获取access_token

  3.所谓引导,其实就是一系列网页在入口出都先访问微信的那个链接,

    即,https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

    然后把实际的接口作为回调url放到redirect_url里面。注意,redirect_url要urlencode。

问题2.公众号服务器配置里面那个url的作用

  一直我都有点不解,因为这个接口听上去好像是所有消息的入口。当然,事实上好像也确实如此。

  不过还有一些额外的事情。比方说,配置里面的token是干什么的,随机串有什么用,

  还有,我们接口没有自己的校验措施,那么岂不是谁都可以访问。

实际情况

  1.配置的URL,是用户在对公众号进行点击,输入文字等操作时,

    微信都会向这个URL发送xml格式的内容,也就是把用户的操作以xml的形式转发给我们的服务器。

  2.至于token和随机串,

    都是用来校验对我们接口的访问是否是来自微信服务器的。

    换句话说,如果我们希望接口不被微信服务器以外的服务器访问的话,

    那么就要对访问携带的参数进行校验,当校验的token还有随机串和我们配置里面的相同的时候,

    才提供该接口应有的功能,否则认为是非法访问。

以上。

未完待续。。。

posted @ 2017-12-13 18:19  浣溪山  阅读(389)  评论(0编辑  收藏  举报