订阅号在内嵌网页中获取微信用户的基本信息

前言:

最近项目需要做微信公众号的开发,是针对订阅号进行处理的,现需要在订阅号中嵌入的网页中获取进入用户的微信基本信息,查阅了微信官方api感觉云里雾里的,在多次尝试成功之后,分享一下【吐槽微信官方api真的是冗长且麻烦,此处用反向思路思考如何解决】:

①首先根据获取用户信息接口的要求,需要获取access_token和openid。

https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

②要获取以上俩参数,经过查阅官方文档,需通过微信网页授权来获取。以下就是以微信测试公众号为例来介绍如何获得。

疑问:手上有两个同样都是订阅号,可是一个有微信网页授权的接口权限,一个没有微信网页授权的接口权限,还得后续继续分析一下出现不同的因素????????

微信订阅号开发-接口配置【以测试号为例】

1、在此处填写自己服务器的接口地址

订阅号在内嵌网页中获取微信用户的基本信息_第1张图片

提交之后微信后台发送请求到该接口进行验证,官方文档说明:微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:

参数 描述
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串

若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。

2、java服务端接受处理

@GetMapping("/sayHello")
	public String login(String signature,String timestamp,String nonce,String echostr) {
		System.out.println(signature);
		System.out.println(timestamp);
		System.out.println(nonce);
		System.out.println(echostr);
		return echostr;
	}

测试阶段,所以直接返回微信要求的值。

注:后续用户在微信公众号的发送的消息都回触发该消息的方法。

以上似乎与获取微信用户基本信息的流程没啥必然关系。。。。。。。。。。。官网说法只是用于验证开发者服务器,是否该处配置的域名会作为其他地方回调的限制,还待进一步论证。


3、微信网页获取用户信息:

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

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是关键参数,该参数是网页用户授权之后的回调页面,其返回值则是code,后续需要用该code换取用的openid,然后在获取用户信息。而配置该参数的则是在【微信公众号平台】:开发-接口权限--网页服务--网页授权界面的修改。如下图:

订阅号在内嵌网页中获取微信用户的基本信息_第2张图片

同样的也可在:公众号设置--功能设置--网页授权域名中进行配置。

下图为微信测试账号系统中的网页授权调整界面,正式版设置的则需要在公众号设置--功能设置--网页授权域名中进行配置进行配置。

订阅号在内嵌网页中获取微信用户的基本信息_第3张图片

如此,授权之后就可以获取到该用户的code,

注意:必须填写域名,即不需要添加http等信息,否则会报10003错误,rediret_ui与和后台配置不符。

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

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

利用该接口则可以获取到当前用户的openid,以及接口调用的access_token凭证。

第三步:拉取用户信息(需scope为 snsapi_userinfo)

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

此时使用该接口就可以获得微信用的基本信息。

你可能感兴趣的:(微信开发,订阅号,获取用户信息,微信开发配置,微信网页授权)