LoveEmperor-王子様

微信网页获取用户授权

背景

  • 微信网页利用现有微信公众号信息去获取用户的授权,然后得到用户的openID,得到openID后可以进一步获取用户信息,用户微信名,头像,调用微信统一下单支付等。
  • 支付宝内置浏览器支付
  • 详情见:微信公众平台

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

  • 微信公众账号是否拥有授权作用域(scope参数)的权限,即是否网页授权(在接口权限–网页授权处),参数分为:snsapi_base和snsapi_userinfo
  • 应用授权作用域(scope参数),snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 )
  • 请求接口实例:

    • scope为snsapi_base
      https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect
    • scope为snsapi_userinfo
      https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
  • 参数说明:

  • 用户同意授权后,如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。页面会自带上code;我们需要获取页面上的code。
  • 代码示例:

    • js部分代码
     //    snsapi_base  snsapi_userinfo 第一步用户授权,跳转目标页,在下一页得到codevar redirect_urls= encodeURIComponent("http://weixin3.szfangle.com/wxapp/roadOutSide/view/Payment.html");var urls =  "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxd6c8775dcf404c1f&redirect_uri="+redirect_urls+"&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
    function mygets() {window.location.href = urls;
    }
    mygets();
    //   目标页(redirect_uri跳转页) 获取code,code来自页面返回,这个需要揣摩,隐藏的坑
    function getQueryString (name){var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");var r = window.location.search.substr(1).match(reg);if (r != null) return unescape(r[2]); return null;}var code = getQueryString('code');
    // 将code通过js传给java处理  appid与secret来自微信公众号,if(code != null){var parameters = {};parameters.appid = "wxd6c8775dcf404c1f";parameters.secret = "9ed577c3e53428189ecbb1dd9a260cd6";parameters.code = code;parameters.grant_type="authorization_code"$.ajax({type: 'POST',data:parameters,url:"http://weixin3.szfangle.com/wxapp/mobileApi/submitWxcode.fgl?",success: function(res){console.log(res)},error:function(res){console.log(res)var resData = eval("("+res+")");}});

第二步:得到code,请求openID

     /*** 接受来自js提交的code,以及其他参数。正式项目中AppID等应该从配置文件中读取* 获取微信授权access_token openid* 这里的url必须这样拼接,这是个坑,否则会报AppID is Miss* 这里我们得到了openid,*/@ResponseBody@RequestMapping(value=Url.SUBMIT_WXCODE_URL)  private WxGetCodeAck getWxcode(HttpServletRequest request,HttpServletResponse httpResponse,ModelMap   model) throws IOException{WxGetCodeAck dto = new WxGetCodeAck();String appid=request.getParameter("appid");String secret=request.getParameter("secret");String code=request.getParameter("code"); String grant_type=request.getParameter("grant_type");String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appid+"&secret="+secret+"&code="+code+"&grant_type="+grant_type+"";String ret = HttpUtils.getInstance().doHttpPost(url, "");Gson gson = new Gson();dto = gson.fromJson(ret, WxGetCodeAck.class);if(dto!=null && dto.getOpenid()!=null){dto.setMsg("ok");dto.setRet(0);}else{dto.setRet(-100);dto.setMsg("getOpenid is error");}        return dto; }

“`

第三步:如果我们需要获取用户更多信息,微信名,头像等

  • 前提是scope:snsapi_userinfo,即请求code时,参数设置
  • 请求url:http:GET(请使用https协议) https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
    • access_token:网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同,即上一步获取openID是的access_token
    • openid:用户的唯一标识
    • lang:返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语
  • 返回说明:

更多精彩请关注微信公众平台: 微信公众平台

微信网页获取用户授权-----LoveEmperor-王子様相关推荐

  1. 微信中html5获取手机号,微信小程序用户授权获取手机号(getPhoneNumber)

    前言 小程序有一个获取用户很便捷的api,就是通过getPhoneNumber获取用户的已经绑定微信的手机号码.有一点要大家注意,现在微信和注重用户体验,有些方法都是需要用户主动去触发才能调用的,比如 ...

  2. 微信小程序简单实现获取用户授权、用户头像并保存到本地

    文章目录 一.获取用户授权 二.获取用户头像并保存 三.实现效果 一.获取用户授权 以index单页面示例, 1.在index.js中的Page-data注册canIUse,用于调用微信开放接口申请用 ...

  3. 微信小程序开发——点击按钮获取用户授权没反应或反应很慢的解决方法

    微信小程序开发--点击按钮获取用户授权没反应或反应很慢的解决方法 参考文章: (1)微信小程序开发--点击按钮获取用户授权没反应或反应很慢的解决方法 (2)https://www.cnblogs.co ...

  4. php 获取企业号用户,微信企业号 获取用户信息(示例代码)

    业务操作最基础的一个功能是获取访客的身份,传统的获取方式是提供一个登录页面用以访客登录. 在微信企业号中,用户在微信中访问页面时,可以根据相关API获取此用户的微信账号信息,以此来匹配业务服务器存储的 ...

  5. php微信企业号获取用户OpenId

    用户点击授权页面,scope不需要进入确认授权页面, 直接采用采用的 scope 为 snsapi_base的时候没有影响,直接获取用户 OpenId:snsapi_base (不弹出授权页面,直接跳 ...

  6. 微信jsapi获取用户地理位置接口开发(第八课)

    本章节给大家介绍通过微信jsapi获取用户的地理位置,微信官方文档关于地理位置给了两种接口,一种是通过微信内置地图查看用户的地理位置,第二种是直接获取当前用户的地理位置坐标信息. 使用微信内置地图查看 ...

  7. php开发微信支付获取用户地址

    使用微信获取地址信息是和微信支付一道申请的,微信支付申请通过,就可以使用该功能. 微信商城中,使用微信支付获取用户的收货地址,可以省略用户输入地址信息的繁复流程,提高用户体验. 但是可能是因为牵扯到用 ...

  8. 支付宝小程序获取用户授权并进行认证登录流程(前端)

    1.支付宝小程序获取用户授权并进行认证登录流程 1.1申请获取用户信息能力     登录功能做之前要先沟通好客户的需求,支付宝小程序获取用户授权调用相应的接口之前要先获得对应的能力.如果需要获取身份证 ...

  9. 微信语音识别及网页获取用户信息

    不知不觉,版本以每周更新一次的脚步进行着,接下来应该是重构我的代码及框架的结构,有朋友反应代码有点乱,确实如此,当时写的时候只是按照订阅号来写的,后来才慢慢增加到支持API接口.目前还在开发第三方微信 ...

最新文章

  1. cot和acot--余切和反余切函数
  2. android Too many open files 解决
  3. CSS是什么及其继承与选择器
  4. 深入理解计算机系统读书笔记
  5. cesium 页面截图_Cesium开发入门篇 | 02开发环境搭建及第一个示例
  6. LeetCode 154 在有序旋转数组中找最小-2
  7. Atitit 知识图谱 知识抽取 信息抽取的总结艾提拉总结 目录 1. 知识抽取 1 2. 数据源主要来自两种渠道( 2 2.1. 内部结构化数据vs 外部网页数据 2 3. 2. 知识图谱的数据来
  8. 河南科技学院计算机专业是几本,河南科技学院是几本
  9. bat命令 延迟执行
  10. angularjs select 下拉加载option 默认选中第一行为空格的解决办法
  11. 万字长文 | 谷歌进入到退出中国市场的前因后果
  12. Kafka其实就是个“篮子”
  13. C和C++的区别点汇总
  14. frl啥意思_FRL是什么意思
  15. 修改ftp服务器开放22端口,linux服务器修改ftp默认21端口方法
  16. 单片机时钟周期、状态周期、机器周期、指令周期的理解
  17. Failed to load JVM DLL
  18. 一款简单好用的数字温度传感器芯片介绍
  19. matlab蒙特卡罗方法求体积_matlab的蒙特卡洛算法
  20. 2020ICPC上海E The Journey of Geor Autumn

热门文章

  1. 阿里云申请免费CA认证
  2. 想知道次世代建模吗?
  3. java入门之计算机基础知识
  4. 汇川使用笔记5:伺服点动测试
  5. python使用技巧(二十三):按位取反符号~
  6. manjaro安装向日葵远程
  7. 黑苹果 macOS 10.10 on vmware15安装流程
  8. MathType与Word对应的字体关系
  9. 小红书主页爬取_小红书图片爬取下载-小红书图片爬取便携版
  10. Mac Allure配置及使用-解决allure版本不兼容导致无法打开报告