openid

微信公众平台开发——微信授权登录(OAuth2.0)

前提是你 提交于 2020-04-01 06:34:11
1、OAuth2.0简介    OAuth (开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。   允许用户 提供一个令牌 , 而不是用户名和密码来访问他们存放在特定服务提供者的数据 。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们的访问许可或他们数据的所有内容。   我们这里主要模拟在微信公众号中使用OAuth2.0进行授权,获取用户的基本信息的过程。详细的开发文档可查看微信的官方文档。   微信公众平台开发者文档: http://mp.weixin.qq.com/wiki/14/89b871b5466b19b3efa4ada8e577d45e.html 2、获取测试公众账号及其相关配置 1)、公众测试账号获取   访问上面的连接,选择“接口测试号申请”获得直接打开 http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index 通过微信客户端扫码登录即可登录。  

OpenID Connect 验证

一曲冷凌霜 提交于 2020-03-28 18:05:46
OpenID Connect Authentication 几乎所有的 Web 应用程序都提示用户创建账号并登录。为了创建账号,用户被要求提供他们的名字、电子邮件、口令、以及确认口令。不仅这些需要耗费用户很大的负担(50次以上的击键),这还带来安全顾虑,由于用户经常在不同的站点使用相同的口令,而且许多站点并不能有效保护这些凭证。 OpendID 开启了联合标识,这样用户可以使用同样的标识在众多 Web 应用程序之间进行验证,用户和 Web 应用程序都信任标识的提供方,例如 Google、Yahoo 和 Facebook,它们保存用户的配置信息并受应用程序的委托验证用户。这消除了每个 Web 应用程序创建自己的自定义的验证系统的需要,对用户来说,注册和登录遍及互联网的站点也变得更为简易和便捷。 OpenID Connect 是下一代的 OpenID,开发 OpenID Connect 考虑到两个关键因素: 向站点传递访问身份验证信息(用户标识)的权限,非常类似与通过委托访问用户的数据(例如用户的日程)。开发人员不应该为这两种不同的用例使用完全不同的协议。特别是许多开发者需要在应用程序中处理这两者。 规范应该模块化,在不需要实现自动发现、关联和其他复杂情况的情况,保持规范与上一个版本的 OpenID 的延续性。 基本的 OpenID Connect 流为: 通过将用户重定向到标识提供者

5. JPA对象继承关系

百般思念 提交于 2020-03-25 19:33:41
3 月,跳不动了?>>> 在实体建模过程中,有些实体会有多种变形,其中大部分的属性都是共用的,只有一小部分是特有的。这时较优雅的设计是将共用的属性抽象出来形成基类,实现类再去扩展特有属性。领域服务可将通用服务抽象出来形成基类服务,再扩展特有服务。而Repository设计,一般情况也是先抽象基础,再扩展特有方法,调用时一般提供泛型支持,根据实现类的类型调用具体的Repository。 今天介绍使用 @Inheritance 注解让一个Repository支持所有实现类,从而简化Repository的设计。 一、对象建模 @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn(name = "member_type") public class Member { @Id private String memberCode; private String memberName; } @DiscriminatorValue("store") public class StoreMember extends Member { private String memberCard; private Integer memberLevel; } @DiscriminatorValue("wexin") public

支付宝小程序获取 user_id(openid) ThinkPHP版

筅森魡賤 提交于 2020-03-24 13:27:13
支付宝小程序获取 user_id(openid) ThinkPHP版 近期支付宝小程序个人公测了,就想着玩一下,没想到就获取用户唯一标识都这么麻烦,微信的openid的话Get请求一下就完事了,支付宝的user_id,需要对接SDK以及公钥私钥验签,而且支付宝的开发工具巨占内存,打开就至少占用2G内存,脑阔疼 首先注册一个小程序,附一些用得到的链接 支付宝小程序注册链接 开发工具下载链接 SDK下载地址 支付宝小程序开发文档 RSA 密钥生成工具下载地址 注册完成后将上边提供的软件都下载好,在开发中心—小程序应用—选择小程序—开发管理–功能列表(在底部)中添加 [ 获取会员基础信息 ] 功能。 使用RSA生成工具生成密钥,并且这个工具以后可以用来验签使用 生成应用私钥和应用公钥后,复制应用公钥,在 [ 开发中心—小程序应用—选择小程序-设置–开发设置–设置接口加密方式 ] 前端部分,我是使用的静默获取,不会弹出授权框,我只需user_id即可 my.getAuthCode({ scopes: 'auth_base', success:(res) =>{ //在此处将res.authCode发送到后端 //可以参照https://blog.csdn.net/qq_40413670/article/details/103796680 五、部署类 dispose.js的9.

钉钉数据相关文档

时光总嘲笑我的痴心妄想 提交于 2020-03-23 18:41:13
3 月,跳不动了?>>> 钉钉数据相关文档 目的:主要实现统计员工的加班及考勤信息。 获取公司全员数据表【该表每天自动更新一次】 首先根据 ACCESS_TOKEN 获取部门列表;包括部门间的关系 然后根据 ACCESS_TOKEN 和 department_id 获取部门的人员信息userid 最后根据userid获取用户的详细信息,组成公司的人员信息表 表字段 参数 说明 unionid 员工在当前开发者企业账号范围内的唯一标识,系统生成,固定值,不会改变 openId userid 员工在当前企业内的唯一标识,也称staffId。可由企业在创建时指定,并代表一定含义比如工号,创建后不可修改 isLeaderInDepts 在对应的部门中是否为主管:Map结构的json字符串,key是部门的Id,value是人员在这个部门中是否为主管,true表示是,false表示不是 isBoss 是否为企业的老板,true表示是,false表示不是 hiredDate 入职时间。Unix时间戳 (在OA后台通讯录中的员工基础信息中维护过入职时间才会返回) isSenior 是否是高管 department 成员所属部门id列表 workPlace 办公地点 orderInDepts 在对应的部门中的排序,Map结构的json字符串,key是部门的Id,value是人员在这个部门的排序值

java获取微信小程序用户信息

為{幸葍}努か 提交于 2020-03-23 14:19:45
3 月,跳不动了?>>> 第一步:获取openid、session_key等信息。 /** * 获取微信小程序的用户openid和session_key/unionid * 返回格式:{"session_key":"ZXxmVGt78993dkNCPmQOA==","openid":"o5TI441P58849p4E-fBrH_HgVvGo","unionid":"oD08m1s24646ZIDJ_AQ9ADUf5QQ"} * @param code * @return * @throws Exception * @return JSONObject * @author tyg * @date 2019年4月25日下午2:24:22 */ public static JSONObject getWechatSmallProgram (String code) throws Exception { // 小程序唯一标识 (在微信小程序管理后台获取) String wxspAppid = "wx456478dfsffdsfsdfsa" ; // 小程序的 app secret (在微信小程序管理后台获取) String wxspSecret = "4ds4f89d4afa46fsfsd" ; //请求地址 String url = "https://api.weixin.qq.com

微信公众平台自定义菜单及高级接口PHP SDK

↘锁芯ラ 提交于 2020-03-22 02:39:57
本文介绍介绍微信公众平台自定义菜单及高级接口的PHP SDK及使用方法。 作者 方倍工作室 修正记录: 2014.05.03 v1.0 方倍工作室 http://www.cnblogs.com/txw1958/ SDK 源码: 1 /* 2 方倍工作室 http://www.cnblogs.com/txw1958/ 3 CopyRight 2014 www.doucube.com All Rights Reserved 4 */ 5 6 class class_weixin_adv 7 { 8 var $appid = ""; 9 var $appsecret = ""; 10 11 //构造函数,获取Access Token 12 public function __construct($appid = NULL, $appsecret = NULL) 13 { 14 if($appid){ 15 $this->appid = $appid; 16 } 17 if($appsecret){ 18 $this->appsecret = $appsecret; 19 } 20 21 //hardcode 22 $this->lasttime = 1395049256; 23 $this->access_token =

【Spring Security + OAuth2 + JWT入门到实战】23. 改造基于APP接口社交注册

有些话、适合烂在心里 提交于 2020-03-20 12:24:16
3 月,跳不动了?>>> 简介 上章完成社交登录但是我们是在数据库有用户的情况下登录了,这章解决数据库无该用户数据先完成注册再登录。 流程 看之前浏览器代码如果用户未注册我们会把用户引导到注册页面 注册完成以后访问 /social/user 连接通过 ProviderSignInUtils帮助包到session取用户资料 登录通过以会拿到用户的唯一标识再调用doPostSignUp方法从session拿出用户资料进行绑定再添加到数据库 到这里我们也看到问题那就是整个流程都是基于session完成的,但是我们APP是无session的 改造 改造思路如果第三方信息在数据库查不到数据先保存到Redis等用户注册完我们平台账号拿到userId以后再绑定保存到数据库 创建帮助类AppSingUpUtils: /** * */ package com.spring.security.social; import java.util.concurrent.TimeUnit; import com.spring.security.AppSecretException; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import

微信小程序云开发快速上手1

僤鯓⒐⒋嵵緔 提交于 2020-03-17 12:15:05
微信小程序云开发快速上手1 一、开通云开发功能 二、新建云开发项目 三、获取openid 四、数据库管理 一、开通云开发功能 1.1、在开发者工具左上角找到“ 云开发 ”按钮,点击开通云开发功能 1.2、点击“ 开通 ” 二、新建云开发项目 新建项目选择云开发模板。这个选项的前提条件: 2.1、 完成上一个步骤,开通云开发功能; 2.2、 必须填写appid; 三、获取openid 3.1、 在云开发目录(cloudfunctions)右键 新建node.js云函数 ,命名为“getOpenid”; 在getOpenid>index.js里添加如下代码(即:把下面的代码覆盖掉getOpenid>index.js的所以代码) // 云函数入口文件 const cloud = require ( 'wx-server-sdk' ) cloud . init ( ) // 云函数入口函数 exports . main = async ( event , context ) => { const wxContext = cloud . getWXContext ( ) return { event , openid : wxContext . OPENID , appid : wxContext . APPID , unionid : wxContext . UNIONID , } } 3

shop--12.微信测试号的申请和获取微信用户信息

你说的曾经没有我的故事 提交于 2020-03-11 09:36:22
在咱们自己的程序里面编写servlet以响应微信号 在接下来的步骤中,我们将在测试号里面设置接口配置信息的URL,一经设置,微信公众号便会发请求到我们设置好的URL去,我们必须编写程序应答才能顺利连通微信公众号,因此咱们需要编写相应的响应程序 需要编写两个类 【SignUtil】 1 /** 2 * 微信请求校验工具类 3 */ 4 public class SignUtil { 5 // 与接口配置信息中的Token要一致 6 private static String token = "myo2o"; 7 8 /** 9 * 验证签名 10 * 11 * @param signature 12 * @param timestamp 13 * @param nonce 14 * @return 15 */ 16 public static boolean checkSignature(String signature, String timestamp, String nonce) { 17 String[] arr = new String[] { token, timestamp, nonce }; 18 // 将token、timestamp、nonce三个参数进行字典序排序 19 Arrays.sort(arr); 20 StringBuilder content =