微信公众号开发之获取oppenid和用户基本信息

Posted on 2017-11-15 15:06  李太阳  阅读(847)  评论(0编辑  收藏  举报

前言:        

      在微信公众号请求用户网页授权之前,开发者需要先在自己的公众平台配置好基本配置,修改授权回调域名JS安全域名。并且需要先获取到全局access_token,这里不对全局access_token的获取做详细讲解,可以参考微信公众号开发文档获取,access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

正文:

第一步:用户同意授权,获取code

      oppenid为一个微信用户的唯一编码,一个oppenid代表一个用户,获取这个值是我们辨别用户的唯一识别编号,那我们怎么获取它呢。

      用code来换取oppenid,code可在第二步用来获取oppenid和页面access_token,这个页面access_token和全局access_token不一样,页面access_token可用来获取用户基本信息。

      url参数的位置必须是按照下图这样排序,如果链接的参数顺序不对,授权页面将无法正常访问。跳转回调redirect_uri,可根据用户自己的需要跳转,并且可以在里面带参数,但须使用urlEncode对链接进行处理。

     参数scope可选择两种不同的方式为snsapi_base或者snsapi_userinfo,snsapi_base当用户打开的时候不会有提示授权页面,但下一步获取用户基本信息的时候必须用户关注微信公众号才能获得,而snsapi_userinfo则在用户不关注的情况下也能获得基本信息但会多一个提示授权的页面。类似下图

参数说明:

 

 

代码编写: 我这里用的需要用户授权的方式

第二步:通过code换取网页授权access_token

        此处是回调方法,可以获得code,用code可获得网页授权access_token,这个access_token可用来获取用户基本信息,废话不多说直接上代码

 

下面是调取方法的代码:

      获取oppenid和网页授权access_token

      WeChat_Var.getAppId()和WeChat_Var.getAppSecret()是公众号的appid和appsecret可登录绑定的公众号查看

 

查询用户基本信息:

      网页授权access_token在此处用到,如果你的数据库编码是utf8mb4 -- UTF-8 Unicode则可不用去除微信名的特殊符号,如果不是则添加会乱码,用这个方法第一步的scope必须为snsapi_userinfo

返回参数:

 

查询用户是否关注公众号:

      如果用户关注了就可以活动用户名和头像等信息,没关注则为null

 

去除特殊符号:

 当业务需求是需要关注公众号才能操作下一步的时候,可以使用snsapi_base,提高体验感,并且关注的情况下可获得基本信息。