网页抓取手机号(吐槽一波:真鸡儿坑,花了老子大半天时间)

优采云 发布时间: 2022-01-14 03:11

  网页抓取手机号(吐槽一波:真鸡儿坑,花了老子大半天时间)

  一波吐槽:真是个鸡坑,拖了我好久。

  获取信息的官方文档地址:

  准备好工作了:

  注:个人订阅号无法使用此功能,我使用微信提供的测试号完成。

  1、在测试账号页面添加测试用户(不添加则无法调用测试JS_SDK函数),如下图:

  

  添加测试用户

  2、在“体验接口权限表”下添加授权回调域名(域名必须与redirect_uri相同,否则会提示错误码10003)

  

  图像.png

  进入开发一:

  注意:获取微信用户信息分为3步,后两步需要在服务器端进行。(坑~)

  1、第一步是获取代码。需要用到的参数如下:(写一个按钮点击触发getUserInfo方法):

  要使用的参数:

  appId(存储在后端,与 wx.config{...} 一起返回)

  redirect_uri 用户点击权限后要跳转的路由的全名url,微信服务器会再次重定向到redirect_uri并携带openid给你,这样就可以获取了(vue项目使用history模式,hash模式不能使用,因为这个url后面是#,微信服务器无法解析这两个#)

  getUserInfo() {

let appId = localStorage.getItem('appId') // 可以保存在后端,同wx.config{...}一起返回的

let url = `https://open.weixin.qq.com/connect/oauth2/authorize? appid=${appId}&redirect_uri=${encodeURI('http://wx.zhulijun.club/getUserInfo')}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`

window.location.href = url // 定义一个重定向到该url,微信服务器会再度重定向到redirect_uri并携带code给你

},

  进入开发2:

  说明:获取代码后,在后台新建一个接口,获取用户信息。(注:前端无法获取用户信息!!!)

  后端开发流程:

  1、获取用户信息前还需要获取access_token和openid

  要使用的参数:

  从前端传递的代码

  appId 公众号的appId(如果是测试号,记得使用测试号的appId)

  secret 公众号的秘密(如果是测试号,记得使用测试号的秘密)

  请求地址:

  https://api.weixin.qq.com/sns/oauth2/access_token?appid=${appId}&secret=${secret}&code=${code}&grant_type=authorization_code

  2、获取access_token和openid后,就可以愉快的获取用户信息了,凯森!!!

  要使用的参数:

  上一步获取的access_token(与微信签名中的access_token不同)

  上一步获取的openid

  请求地址:

  https://api.weixin.qq.com/sns/userinfo?access_token=${token}&openid=${openid}&lang=zh_CN

  完整代码:

  router.get('/getUserInfo', (req, res) => {

let code = req.query.code // 前端传递的code

let appId = wxConfig.appID

let secret = wxConfig.appsecret

let url1 = `https://api.weixin.qq.com/sns/oauth2/access_token?appid=${appId}&secret=${secret}&code=${code}&grant_type=authorization_code`

https.get(url1, (response) => {

let result = ''

response.on('data', (chunk) => {

result += chunk

})

response.on('end', () => {

console.log('一、' + result)

result = JSON.parse(result) 巨坑:node中http和http返回的数据都是字符串,需要JSON.parse转换为对象

let token = result["access_token"]

let openid = result["openid"]

let url2 = `https://api.weixin.qq.com/sns/userinfo?access_token=${token}&openid=${openid}&lang=zh_CN`

https.get(url2, (response) => {

let result = ''

response.on('data', (chunk) => {

result += chunk

})

response.on('end', () => {

console.log('二、' + result)

res.send(result)

})

})

})

})

})

  总结:虽然过程很痛苦,但结果还是很开放的~~~

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线