在uniapp h5中,微信授权获取用户信息

我这里有个公众号网页,需要获取用户信息,折腾了一天,终于搞定了,回头看看其实很简单,但是配置很复杂

1.配置防火墙打开相关入站端口,怎么打开端口请百度。因为uniapp调试时自启动一个服务器,打开manifest.json加入

"h5" : { "title" : "xx平台", "domain" : "你的域名", "sdkConfigs" : { "maps" : {} }, "devServer" : { "port" : 8081,//调试用服务器端口 "disableHostCheck" : true, "proxy" : { "/gzh" : { "target" : "http://192.168.1.221:8080/gzh", "changeOrigin" : true, "secure" : false, "pathRewrite" : { "^/gzh" : "" } } }, "https" : false  } }

2.申请一个域名,没有这个不行,可以考虑花生壳,natapp,ngrok,公司已经买了花生壳,所以我直接用了。

3.申请开通微信公众号平台测试号,配置:注意,不要加http前缀,填写你的公众号网页域名

先参考微信开放文档:

https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

正文开始!分3步

1.向我的服务器申请code。2 回调到uniapp页面,这一步很重要,也是别的文章没提到的。3.从uniapp页面上向我服务器申请获取用户信息

看到了吧,1,3两步其实都是在我服务器上获取的信息,不是网上其他人通过vue客户端获取,这样更简单更安全,因为所有关键信息都是在服务器上配置的。具体:

服务器用的spring boot,用了wxJava库,这个库功能可多了,大家可以自己百度。

1.服务器代码:这里注意不能用ajax调用,要用window.location.href,从uniapp跳转到这个地址,需要配置好回调地址,这个回调地址是uniapp上的一个显示用户信息的page。这里scope分2种,snsapi_base会让用户显示一下正在登录,不需要用户同意,也可以获取用户信息。snsapi_userinfo需要用户点确定同意。这里用第一种方式。服务器指示客户端跳转到微信服务器获取code

2 微信服务器会回调回来,这里回调回来的地址就是uniapp的page地址,这个页面内容就不发了,没什么内容,主要就是

onLoad(option){ console.log(option.code)//空的,获取不到因为参数在#前 let code=getUrlParam('code') this.info=getUserInfo(code,'') },但是这里有个问题,他code,state参数会在#之前,通过页面没法获取,所以需要从window.location.search获取。再次向服务器申请,获取用户信息(最终目的)。


3.获取用户信息

你可能感兴趣的:(在uniapp h5中,微信授权获取用户信息)