微信公众号开发1-微信授权登录
说在前面的话
关于微信公众号的项目也已经告落一段时间了,但是项目结束后又有参加了新的项目,导致一直没有时间分享项目经验,今天正好得空来分享一下本项目,本项目主要用到了微信公众号开发,百度地图api等,具体技术如下
- 微信授权登录
- 微信获取用户定位
- 百度地图批量计算两点直接距离(驾车距离)
- 模板消息推送
- 微信支付
- 微信退款
- 微信内嵌地图
- 经纬度转换及逆转换
微信授权登录
1、微信授权登录的有点和缺点
没有接触过微信授权登录的小伙伴可能会问什么是微信授权登录,其实微信授权登录就是不需要用户输入用户名和密码,直接就可以登录该平台,从而获取到唯一标识符来获取个人信息。
- 优点:不需要用户再输入用户名以及密码 直接就可以登录
- 缺点:必须在微信里使用才可以
2、准备微信授权登录(*)
左侧开发——>基本配置中查询微信AppID,AppSecret。
微信授权登录时必须要用自己的微信AppID,AppSecret。
白名单也需要进行配置。
还有设置——公众号设置中配置业务域名,js接口安全域名,网页授权域名。
- 业务域名:这个其实不是太重要,不配置它也可以正常运行项目,但是会在网页上端提示红色框框,表示这个网址可能存在防欺诈盗号。
- js接口安全域名
这个借口就比较重要了,因为如果你不配置这个域名的话,当你网页中需要获取用户定位等JS的组件时,就会出现错误信息。
- 网页授权域名
最重要的一部分,如果没有设置该域名的话,在用户登录时会报错显示非法请求或者是域名未获得权限等
注意,在配置之前需要将它的文件下载到自己的服务器上,需要让微信能访问到您的项目,比如你的项目是http://www.xiaofeng88.cn/wxtest,将文件放在该项目的根目录那么你必须在域名里直接写该域名+项目名,也就是填写http://www.xiaofeng88.cn/wxtest。这样就可以配置成功了。
如果您是新手,并没有微信公众号,这里微信也提供登录测试号,在测试号里可以登录申请,测试号不需要配置白名单,比正式号简单一些。具体不再论述。
开发
开发四步走策略
- 第一步:用户同意授权,获取code
第一步需要用户点击同意我们才可以进行下一步操作,因此我们刚开始的链接需要引导用户去点击授权登录,在请求时您会给微信发送请求,请求中有一个参数是redirect_uri,然后微信会把这个code发送到这个地址上,所以这个地址我这边建议是后端的地址,接受到微信的请求后可以获取code参数。
参数如下:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
参数介绍:
appid=APPID :就是微信的唯一AppId
redirect_uri=REDIRECT_URI :你自定义的微信发送给你的code地址。你需要用这个uri服务去接收微信发来的code。(这个地址需要你用encode转义)
response_type=code:不变化
scope=SCOPE :snsapi_base 静默方式登录 snsapi_userinfo用户详细信息,需要用户点击授权
state=STATE:DEFAULT
所以如果你想静默登录的话就
https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的appid填写处&redirect_uri=你获取code的地址&response_type=code&scope=snsapi_base&state=DEFAULT#wechat_redirect
- 第二步:通过code换取网页授权access_token
获取code后,请求以下链接获取access_token:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
获取的代码如下:
if (StringUtils.isEmpty(code)) {throw new IllegalArgumentException("code can't be null or empty");}//拼接参数String param = "?appid=" + weixin.getAppId() + "&secret=" + weixin.getSecret() + "&code=" + code + "&grant_type=authorization_code";//创建请求对象HttpsClient http = new HttpsClient();//调用获取access_token接口Response res = http.get("https://api.weixin.qq.com/sns/oauth2/access_token" + param);//根据请求结果判定,是否验证成功JSONObject jsonObj = res.asJSONObject();if (jsonObj == null) {return null;}if (Configuration.isDebug()) {System.out.println("getSnsOAuth2AccessToken返回json:" + jsonObj.toString());}Object errcode = jsonObj.get("errcode");if (errcode != null) {//返回异常信息throw new WeixinException(getCause(jsonObj.getIntValue("errcode")));}return new SnsAccessToken(jsonObj);
这里我说一下 我使用了是weixin4J的sdk,下载地址
微信公众号开发1-微信授权登录相关推荐
- 微信公众号网页OAuth2.0授权登录并获取用户信息(SpringBoot实现)
微信公众号网页OAuth2.0授权登录并获取用户信息(SpringBoot实现) 文章目录 微信公众号网页OAuth2.0授权登录并获取用户信息(SpringBoot实现) 准备工作 开发思路 具体代 ...
- 微信公众号开发Django-网页授权
原文链接 对于基础的微信公众号开发,网页授权,JSSDK,图片处理应该是最重要的三部分了 根本上也是按照文档开发,技术含量并不高. (选Django=很多权限控制模块已经做好了,比较省力) 在开始之前 ...
- ASP.NET MVC4 微信公众号开发之网页授权(一):搭建基础环境
首先你得注册并认证一个个人或企业的微信公众号===服务号从而确保获得以下接口权限: 然后打开公众号设置里的功能设置里找到业务域名和网页授权域名分别填上你的域名(注:已备案的域名),如下图所示: 到这里 ...
- 微信公众号开发之微信公众平台与公众号第三方平台区别
微信公众号开发分为微信公众平台和公众号第三方平台. 首先需要一个认证服务号,然后在设置,基本配置里面配置公众号开发信息和服务器配置. 这是我们会得到开发者ID(AppID),开发者密码(AppSecr ...
- 视频教程-基于python的微信公众号开发教程-微信开发
基于python的微信公众号开发教程 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试(软考)--"信 ...
- 微信公众 mysql回复图片_微信公众号开发之微信公共平台消息回复类实例
本文实例讲述了微信公众号开发之微信公共平台消息回复类.分享给大家供大家参考.具体如下: 微信公众号开发代码我在网上看到了有不少,其实都是大同小义了都是参考官方给出的demo文件进行修改的,这里就给各位 ...
- 微信公众号开发之微信网页授权获取用户个人信息
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 一丶概述 微信网页授权 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑 ...
- 微信公众号开发系列-网页授权获取用户基本信息
OAuth2.0网页授权这个也是在做微信公众平台用到最多的,可以利用授权接口对自己平台内用户进行绑定,实现用户扫描码和微信分享.微信签到.微信商城购物等: 1.高级接口OAuth2.0网页授权设置 a ...
- Java微信公众号开发之网页授权获取用户基本信息
本篇博客讲解的网页授权只需要前端传递一个backUrl(回调地址) 到后台接口,后台接口会完成整个授权流程,无需前端做更多工作: 一. 前言 微信公众号开发,需要用到网页授权获取用户信息,通过OAut ...
最新文章
- PyTorch 可视化特征
- redis client 2.0.0 pipeline 的list的rpop bug
- Day15模块(导入,使用)
- Linux中查看日志文件的正确姿势,求你别tail走天下了!
- 广西计算机一级考试是机考吗,广西计算机一级考试机考模式探索及应用.doc
- 随机生成10元素数组并找出最大元素(Java)
- 简单介绍下我使用了一年多还不知道的Sql server 2005 组件知识
- root cause of error messagw for a mixed usage of 01 and 03
- zabbix 3.0.0beta1安装-centos6.8版本
- Java基础学习总结(91)——阿里巴巴Java开发手册公开版
- php是根据html中的值查询数据条件_FleaPHP框架数据库查询条件($conditions)写法总结...
- 读懂hadoop、hbase、hive、spark分布式系统架构
- JAVA加载一个目录下有依赖关系本地库的通用代码
- 汇编语言 王爽 【第四版】 第一章 检测点1.1
- HeadFirstJava——3_变量
- TCP/UDP测试工具下载及使用教程
- 人用药品注册技术规定国际协调会议(ICH)
- 学术论文SCI、期刊、毕业设计中的图表专用软件
- 思维导图 · App的商业模式:如何寻找商业化
- VRRP(虚拟路由冗余技术)
热门文章
- 智沃邦条码扫码出入库管理系统 仓库出入库管理系统 一维码 二维码系统
- javaweb学习总结(四):Http协议
- 【FPGA-Spirit_V2】基于FPGA的循迹小车-小精灵V2开发板
- 遗传算法中的种群长度及范围有什么用
- 惠普linux下做w7,惠普u盘安装w7系统安装教程【图文步骤】
- leela zero 使用
- 人生应该追求的十种意境
- Phoenix报错Malformed connection url
- 主板linux驱动程序,nVIDIA nForce系列主板芯片组驱动For Linux 下载_驱动下载_太平洋下载中心...
- GeForce 1080Ti显卡驱动+cuda8.0+cudnn6.0 外加TensorFlow-GPU