openid

微信小程序登录Java后台接口(详解,附示例代码)

女生的网名这么多〃 提交于 2020-03-02 04:40:50
首先看一下官方文档 地址: 微信小程序官方文档API登录接口 我们先对官方给的时序图进行简单的分析 1.当小程序调用wx.login()时,会获得一个 code(临时登录凭证) ,然后我们需要用wx.request()将code发送到自己的服务器. 2.在服务器的接口中,调用登录凭证校检接口,将 appid(小程序唯一标识) + appsecret(小程序的app secret) +code发送到微信接口服务.然后微信服务器会返回 session_key(会话秘钥)+openid(用户的唯一标识) . 3.在服务器的接口中,已经得到微信用户的唯一标识openid,已经数据传输的session_key,接下来就写业务逻辑了. 4.返回给小程序自定义登录态,小程序将它存入storage中.接下来的wx.request()的业务请求,都会携带自定义登录态. 5.在服务器的接口中通过自定义登录态查询openid和session_key,然后返回业务数据. 划一下重点 在服务器的接口中,需要进行一个http请求,将从小程序获得的code和接口中存储的appid和secret发送给微信接口服务,然后就可以获得session_key和openid. 接口地址 https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret

微信公众平台开发(71)OAuth2.0网页授权

半世苍凉 提交于 2020-03-02 03:49:44
本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称、头像、性别、国家、省份、城市、语言。 本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息,而无需模拟登录。 在本文中,特别要注意的是有两个不同的Access Token,他们产生的方式不一样,一种是使用AppID和AppSecret获取的access_token,一种是OAuth2.0授权中产生的access_token,方倍工作室分别称为 全局Access Token和 授权Access Token。 一、通过全局Access Token获取用户基本信息 1. 用户关注以及回复消息的时候,均可以获得用户的OpenID <xml> <ToUserName><![CDATA[gh_b629c48b653e]]></ToUserName> <FromUserName><![CDATA[ollB4jv7LA3tydjviJp5V9qTU_kA]]></FromUserName> <CreateTime>1372307736</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[subscribe]]></Event> <EventKey><![CDATA[]]></EventKey> </xml>

网页微信授权

删除回忆录丶 提交于 2020-03-02 03:47:19
一、什么是OAuth2.0 官方网站:http://oauth.net/ http://oauth.net/2/ 权威定义:OAuth is An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications. OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站、移动或桌面应用上存储的私密的资源(如用户个人信息、照片、视频、联系人列表),而无需将用户名和密码提供给第三方应用。 OAuth 2.0是OAuth协议的下一版本,但不向后兼容OAuth 1.0。 OAuth 2.0关注客户端开发者的简易性,同时为Web应用,桌面应用和手机,和起居室设备提供专门的认证流程。 OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们的访问许可或他们数据的所有内容。 新浪微博API目前也使用OAuth 2.0。 原文:http:/

公众号发送消息模板(java)

折月煮酒 提交于 2020-02-29 13:37:50
这段时间接触公众号开发,写下向用户发送消息模板的接口调用 先上接口代码 如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。 1 public static JSONObject sendModelMessage(ServletContext context,JSONObject jsonMsg) { 2 System.out.println("消息内容:"+jsonMsg); 3 boolean result = false; 4 try { 5 getWX_AccessToken(context); 6 } catch (Exception e) { 7 // TODO Auto-generated catch block 8 e.printStackTrace(); 9 } 10 // 拼接请求地址 11 String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN"; 12 requestUrl = requestUrl.replace(

微信小程序

旧城冷巷雨未停 提交于 2020-02-29 13:25:55
在小程序中获取用户 openid 基本上是小程序开发面对的第一个问题,在这里分享下获取用户 openid 的简单例子。 基本流程: 1、通过登录调用接口 wx.login 获取临时登录凭证 code ,并回传到开发者服务器 。 2、后台使用 code、appid、appsecret 换取用户唯一标识 openid 和会话密钥 session_key。 (appid、appsecret 这2个值在开通微信公众号认证之后,可以在微信公众平台小程序后台获取) 刚开始进入小程序调用登录接口,不过现在小程序获取用户信息作出调整,如果登录用到此接口,需要开发者对登录做出调整参考 获取用户信息接口调整 ,这里根据自己业务需求判断调用该接口,涉及到后台需要 iv 和 encryptedData 等解密用户信息等。 直接上代码: App({ onLaunch: function() { wx.login({ success: function(res) { if (res.code) { //发起网络请求 wx.request({ url: 'https://xxx/getOpenid', data: { code: res.code } }) } else { console.log('登录失败!' + res.errMsg) } } }); } }) 后台简单使用 java

使用python导出公众号关注用户

家住魔仙堡 提交于 2020-02-29 06:20:09
要从公众号导出关注用户,共需要三步: 获取access_token 获取关注用户的Open_id 根据open_id获取用户的信息 获取access_token 公众号文档对access_token的简介: URL: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 返回结果:{"access_token":"ACCESS_TOKEN","expires_in":7200} 字段解析: grant_type 是 获取access_token填写client_credential appid 是 第三方用户唯一凭证 secret 是 第三方用户唯一凭证密钥,即appsecret 获取access_token的代码: access_token = None def get_access_token(): url = 'https://api.weixin.qq.com/cgi-bin/token' global access_token params = { 'grant_type':'client_credential', 'appid':'xxxxx', #从公众号上找到自己的appid 'secret':'xxxx',

微信公众号静默授权回调接口两次

廉价感情. 提交于 2020-02-28 09:38:25
微信公众号静默授权文档 在微信端点开链接提示"获取openId失败",这是接口返回的结果,说明微信已经请求到接口了 加上日志打印 log.info("code:{}",requestVO.getCode()); log.info("openId:{}",openId); 发现日志输出了两遍 所以我猜测微信那边应该回调了接口两次, 参考链接 百度了一下 处理方案 加 &connect_redirect=1 (经过测试无效) 有的说提供一个中间Controller,然后重定向到业务Controller( 参考链接 ,未测试) 通过缓存控制 最后解决的办法是加个缓存,key=code,value=openId String redisOpenId = redisCache.getCacheObject(wxCode); if (StringUtils.isEmpty(redisOpenId)){ Map<String, String> weiXinMap = WeiXinUtil.getOpenIdByCode(wxCode); String openId = weiXinMap.get("openid"); redisCache.setCacheObjectSeconds(wxCode,openId,30); } 来源: oschina 链接: https://my.oschina

投票:OAuth2.0 技术选型你会怎么选

[亡魂溺海] 提交于 2020-02-27 15:58:37
1. 前言 在使用 OAuth2.0 中 Authorization Server (授权服务器)是一个回避不了的设施,在大多数情况下我们调用的是一些知名的、可靠的、可信任的第三方平台,比如 QQ、微信、微博、github 等。我们的应用只作为 Client 进行注册接入即可。也就是说我们只需要实现 OAuth2.0 客户端的逻辑就可以了,无须关心授权服务器的实现。然而有时候我们依然希望构建自己的 Authorization Server 。我们应该如何实现?今天不会讨论具体的技术细节,来谈谈 OAuth2.0 的技术选型。 2. Spring Security OAuth2 现状 在做 Spring Security 相关教程 的时候首先会考虑 Spring 提供的 OAuth2.0 功能。当我去 Spring 官网了解相关的类库时发现居然 Spring 的 OAuth2.0 类库即将过期的通知,有图有真相: 总结以下就是 Spring Security OAuth 的模块即将过期,后续的功能已经迁移到 Spring Security 5.2.x 中,但是不会再提供 Authorization Server 的功能。 在官方声明中还提到, 当前 Spring Security OAuth 分支是 2.3.x 和 2.4.x 。 2.3.x 版本将于 2020 年 3 月寿命终止

微信小程序获取用户OpenId

陌路散爱 提交于 2020-02-27 06:40:23
1.在小程序中获得UserCode: wx.login({ success: function (res) { thisApp.setData({ userCode: res.code }) } }) 2.在小程序中获得UserInfo: wx.getUserInfo({ success: function (res) { thisApp.setData({ userInfo: res.userInfo }) } }) 3.调用远程开放接口(Elvania.cn)注册更新用户数据: wx.request({ url: "https://www.elvania.cn/WeChat-interface/httpController/checkUser.WeChat", method: "GET", data: { userCode: thisApp.data.userCode, userName: thisApp.data.userInfo.nickName, userGender: thisApp.data.userInfo.gender, userIcon: thisApp.data.userInfo.avatarUrl, appId: "位于开发设置中", appSercet: "位于开发设置中" }, success: function (res) { var result =

微信小程序开发- 5

偶尔善良 提交于 2020-02-27 04:51:30
微信小程序开发-开发流程和开发基础 - 1 微信小程序开发-2- 生命周期、事件、原生组件 微信小程序开发- 3 - 原生组件(一) 微信小程序开发- 4 - 原生API 微信小程序开发- 5 - 开放功能 登录授权 登录流程 小程序wx.login() 获取code code为当前用户的临时登录凭证,有时效,5min wx.request()发送请求向开发者服务器,携带code 开发者服务器向微信服务器发送请求,通过微信凭证校验接口 换取ssession_key和openid ssession_key是用户当前会话的秘钥;这个秘钥是对用于数据进行加密签名的秘钥 openid 是用户在小程序里面的唯一标识 开发者服务器将ssession_key和openid组合生成登录态标识 开发者服务器将ssession_key和openid和登录态标识存入到数据库 开发者服务器向小程序端返回登录态标识 小程序将登录态存入storage wx.request()发起业务请求携带登录态标识; 开发者服务器通过登录态标识查询到用户的ssession_key和openid 通过openid对用户的数据进行存取操作,同时将结果返回小程序端 code和session_key是一一对应关系 同一个code只能换取一个session_key session_key 有实效性 比code时间长 用户使用频率越高