服务号中的网页授权

网页授权的目的是获取微信用户的 openid ,有两种授权方式:snsapi_basesnsapi_userinfo,微信用户无论是否关注了服务号前者都是静默授权,其只能获取到 openid ,而对于后者的方式,关注了服务号的用户是静默授权,没有关注的话则需要用户手动添加授权按钮。授权的过程是:

  1. 请求 oauth
    发送请求 https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 其中 APPID 填写开发者的 appidREDIRECT_URI 填写最终要跳转到的 url,注意要将该 url 使用 encoder 编码,SCOPE 填写上面的两种方式其一,STATE 可以随意填写,一般填写 1 或者 123 等。

  2. 获取回调的 code
    上面步骤1发送请求后浏览器中会跳转到回调的 url 中,并且携带 codeurl 中作为参数,如:redirect_uri/?code=CODE&state=STATE ,这里的 STATE 没有用。

  3. 使用步骤2中的 CODE 再次发送请求获取 ACCESS_TOKEN
    发送请求 https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code 获取 ACCESS_TOKEN,将步骤2中获取到的 CODE 填充到该 URL 中,如果使用的是第一种授权方式,那么获取到 ACCESS_TOKEN 的同时也拿到了 openid,返回的结果模型是:

    {"access_token":"ACCESS_TOKEN","expires_in":7200,"refresh_token":"REFRESH_TOKEN","openid":"OPENID","scope":"SCOPE"
    }
    

前端使用了 Angular ,并且使用的是哈希路由,导致 url 中带有 # ,在上面第一步请求返回回调的地址中,其拼接 code 时候拼到了中间,然后瞬间被 angular 跳转到默认路径中,导致后面获取不到 code ,也就无法执行第三步来获取 ACCESS_TOKEN,如下图:

上面一个地址是服务器返回的回调地址瞬间值,很快被重置为下面的地址,导致前端获取不到 code ,自然无法获取到 ACCESS_TOKEN。那么要解决这个问题需要将 angular 路由修改为非哈希模式。

微信网页授权的制作步骤相关推荐

  1. php怎么开发微信网页,PHP实现微信网页授权开发的步骤

    这篇文章主要为大家分享了PHP实现微信网页授权开发教程,开发者可以通过授权后获取用户的基本信息,感兴趣的小伙伴们可以参考一下 微信网页授权是服务号才有的高级功能,开发者可以通过授权后获取用户的基本信息 ...

  2. ajax 微信code获取_微信网页授权——获取code、access_token、openid,及跨域问题解决...

    首先在微信开发文档中有提到微信网页授权的操作步骤: 第一步:用户同意授权,获取code 在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中 ...

  3. 微信公众号网页授权登录完整步骤版学不会你打我....

    微信点击授权登录 全过程版本轻松完成 第一步 注册微信测试号 具体操作步骤 第一步:用户同意授权,获取code 第二步:通过code换取网页授权access_token 第三步:拉取用户信息(需sco ...

  4. 微信开发---微信网页授权、JS-SDK和微信公众号的基本设置

    用了好几个小时的时间,整理了一下关于公众号的思维导图,由于CSDN不能上传相对应的文件,所以萍子一一的分解开的截图附上来,希望对大家有所帮助哦~ 因为是电脑设备自动截图,又鉴于内容比较多,可能不是太清 ...

  5. Spring Boot 微信-网页授权获取用户信息

    微信-验证服务器有效性 微信-网页授权获取用户信息 网页授权获取用户信息步骤 第一步:用户同意授权,获取code 第二步:通过code换取网页授权access_token 第三步:拉取用户信息(需sc ...

  6. 微信公众号开发__微信网页授权并获取用户基本信息(是否关注公众号、头像、昵称等)

    本人最近要做微信公众号网页开发的项目,其中有个需求是判断用户是否关注公众号,由于之前没有接触过微信授权的东西,所以提前开始做调研.在度娘上看了好多博客.百度知道.百度经验.知乎问答等,还仔细阅读了微信 ...

  7. PHP开发之-微信网页授权获取用户基本信息

    如何通过网页授权获取用户基本信息(国家,省,市,昵称)相关信息 必要条件: 1)公众号认证 2)有网页授权获取用户基本信息的权限接口 注意:最近有朋友说:在公众平台申请的测试号,会出现无法取到用户信息 ...

  8. 微信网页授权登录的方法

    微信网页授权登录官方文档 微信网页授权登录的方法–推荐文章一 微信网页授权登录的方法–推荐文章二 总结: 微信授权方式(scope的属性值控制): 应用授权作用域,snsapi_base (不弹出授权 ...

  9. .NET WebAPI 微信网页授权的实现(一)前端篇

    写在前面 微信网页授权登陆是微信网页开发的第一步,由于框架限制需要使用.NET WebAPI的前后端分离模式进行开发,所以经过几天的摸索,写了这个简单的微信网页授权的实现Demo,本篇文章为微信公众号 ...

最新文章

  1. 【Live555】liveMedia下载、配置、编译、安装、基本概念
  2. FFmpeg将Jpeg 编码到视频中
  3. 怎么在代码中打开、关闭屏幕旋转
  4. windows 3.x编程指南_18000 MHz 可编程衰减器
  5. 16、修改数据表的存储引擎
  6. 常用正则表达式总结(js与C#对照)
  7. 关于 Node.js 应用里使用 winston 进行日志记录的最佳实践
  8. 实现页面内多个表格在滚动时,表头浮动的效果(是同时多个表格哟)
  9. Shell编程:简洁的 Bash Programming 技巧(三)
  10. Keras中的循环层
  11. eclipse怎么恢复默认界面
  12. red5流媒体服务器网站,[RED5]red5流媒体服务器(开源免费)的安装方法
  13. 教你把mov格式的视频转换mp4
  14. MOOCad Visual Analysis of Anomalous Learing Activities in Massive Open Online Courses
  15. 荧光和明场图像融合 matlab,一种用于明场显微成像的多层图像融合算法
  16. Tensorflow keras入门教程
  17. C++ strcpy、strcat、strcmp和strlen的实现
  18. 如何理解ANOVA中的F值与P值
  19. ipad和android平板应用,排名前100的iPad应用中只有一半支持Android平板
  20. SQL更改表名,数据库名,字段名

热门文章

  1. 如何解决谷歌浏览器不加载Adobe Flash Player的问题
  2. 前端总线频率(FSB)及DDR内存频率详解,彻底让你明白CPU总线带宽与内存带宽......
  3. 在python中读取和写入CSV文件(你真的会吗?)
  4. 【软件安装】SPSS22.0安装
  5. Jmeter压力测试中的相关参数(QPS、TPS)
  6. 职场社交平台领英(LinkedIn),暂停中国境内的新用户注册
  7. 程序员也文艺:海燕——高尔基
  8. 入门微信小程序开发(三)数据绑定的几种用法
  9. LFLytroDecodeImage-从原始lenslet图像解码Lytro光场
  10. 高速总线之一:XAUI 接口