精华内容
下载资源
问答
  • 和第七应用一样的
    万次阅读 热门讨论
    2019-04-20 00:00:55

    前言

    hello小伙伴们大家好,懒癌患者菌菌又来了,好久没有给大家推荐ios应用了 , 菌菌在网上各种扒帖子的时候, 发现了一款iOS第三方的应用商城,我们可能都知道,在iOS的App store里有很大的限制导致很多安卓有的应用里面无法找到,从而使iOS显得特别的不灵活。但是今天给大家分享的这款软件,就极大的去掉了这种限制,软件内有更多app store内无法搜到的应用。好啦,废话少说,上干货!

    应用介绍

    TL傅福利站是一款iOS端的第三方应用商店,类似于一个小型的iOS端应用商店,里面有许多精品和App store里无法下载的软件供大家免费下载。

    使用方法

    1.文章最底部下载软件,切记复制链接后一定要用系统自带的Safari浏览器打开,就可以查看应用,不用自带浏览器的话是无法正常安装应用的。

    2.除此之外软件配有客户端,大家为了方便可以使用客户端。

    3.大家可以在文章左下角阅读原文里获取客户端下载地址。

    4.将链接复制Safari浏览器打开然后会提示安装应用,过程中出现的“确认”、“信任”字样反复点就行了。记得最后要在设置中将应用设置为信任应用才可以正常使用。

    功能上是跟网页版一样的,就是方便了些而已。

    下载地址:微信公众号关注Apper菌回复 0001即可获取下载地址!

    下载地址:微信公众号关注Apper菌回复 0001即可获取下载地址!

    下载地址:微信公众号关注Apper菌回复 0001即可获取下载地址!

    重要的事情说三遍!!!!!!!!!

    更多好玩欢迎访问[初墨博客](https://wwwcmboke.cn)

    好了
    今天的应用推荐就到这里了
    我们下次见
    拜了个拜~

    更多相关内容
  • Oracle 数据库应用教程课件
  • 企业微信接入三方应用(以服务商身份)

    万次阅读 多人点赞 2019-07-27 17:20:15
    最近在搞企业微信的东西,刚开始对这个的确没有任何的概念,属于两眼...首先,要明确两个概念,就是微信企业微信不是一个东西(虽然有些信息互通)、企业微信应用和服务商的三方应用也不是一个东西(虽然也有...

    最近在搞企业微信的东西,刚开始对这个的确没有任何的概念,属于两眼抓瞎的类型,因为场景比较特殊网上搜到的资料也不多,只能自己看着官方文档一点一点去调试。于是,一系列的踩坑之路就上演了,这里就简单介绍一下笔者自己踩的坑吧,也为其他刚刚接触企业微信开发者朋友们提供一点借鉴。

    首先,要明确两个概念,就是微信和企业微信不是一个东西(虽然有些信息互通)、企业微信应用和服务商的第三方应用也不是一个东西(虽然也有些接口可以调用),企业内部开发指的是开发某个企业自己用的应用,而第三方应用开发指的就是开发者作为服务商开发第三方应用,让其他企业(使用企业微信的人)安装你(服务商)开发的应用。此处重点介绍下笔者作为服务商第三方应用的开发过程吧!(如下图是企业微信官方文档,上面有企业内部开发和第三方应用开发)
    在这里插入图片描述

    需要的准备:注册两个企业,一个作为应用的服务商,一个作为应用的使用者,使用服务商的企业登陆到服务商的管理平台。此处需要注意的是,企业微信有两个管理平台,一个是企业微信管理后台另一个是服务商管理平台,不要登陆错了。
    企业微信管理后台:https://work.weixin.qq.com/wework_admin
    企业微信服务商管理后台:https://open.work.weixin.qq.com/wwopen/developer
    企业微信管理后台
    企业微信服务商平台
    第一步,在服务商平台创建一个应用,将需要填写的信息填入。基础信息可以根据实际情况填写,开发信息可能刚接触的时候并不清楚如何填写,这里可以暂时先写随便写一个,后面可以修改并且需要认证,下文会将用到的一一进行介绍。
    在这里插入图片描述
    在这里插入图片描述
    第二步,信息介绍
    1.基本信息,在基本信息中尤其要注意的是suiteId和secret,suiteId是用于标记用于的唯一标识,secret是用于加解密的秘钥,尤其是secret,千万不能泄露。
    在这里插入图片描述
    2.使用配置,应用主页是企业安装第三方应用之后,跳转的主页页面;可信域名是企业微信进行授权和前端使用JS-SDK的时候校验的域名,若是域名不一致企业微信会报错;安装完成回调域名是在企业进行安装应用之后回调接口的域名;业务设置URL笔者没有用到,没有进行深究
    在这里插入图片描述
    3.回调配置,数据回调URL笔者没有用到,也是随便写了一个;指令回调URL,这个千万要注意,在后面获取到suite_ticket(应用ticket)的时候就需要用他;Token和EncodingAESKey,自动生成填上就行,不过不要随便去更改,因为这边更改的话,后面解密信息的时候就需要更改代码中的这两个值。
    在这里插入图片描述
    比较重要的信息就是这些,因为笔者自己的需要这边没有用到业务设置URL和数据回调URL,若是有大神用到也希望不吝指出,这里感激不尽。

    第三步,开发文档,将以上信息了解了之后,还需要看下官方文档。因为笔者是作为java开发的角度来进行开发的,所以主要需要了解的是快速入门服务端开发API注意,此处文档区分第三方应用开发和企业内部开发,服务商开发第三方应用一定是第三方应用的那一篇文档,千万不要看错了!
    文档链接:https://work.weixin.qq.com/api/doc
    在这里插入图片描述
    1.快速开发,注意此处的三个场景:企业的、应用的和服务商的。在开发过程中一定要分清这三者的区别,这是重中之重,“企业的”是指登录者所属的企业;“应用的”是指开发者的第三方应用;“服务商的”是指应用所属的企业,这和登录的企业不一样,一定要区分清楚!(此处不分清楚,后面会有很多坑)
    在这里插入图片描述
    2.服务端API,这里就是主要获取需要的信息api都有,但此处要区分清楚应用的、企业的、服务商的、个人的信息,它们不可通用(如下文介绍的user_ticket和suite_ticket不是一个东西)
    在这里插入图片描述
    第四步:指令回调流程的建立,在第二步中说到指令回调Url,需要在这里进行配置(代码在这一步最后贴上),企业微信官方会每10分钟调用一次,或者手动点击“刷新Ticket”,或者在编辑完成确认的时候会进行回调。
    在这里插入图片描述

    指令回调的需要先参考这篇文档(其中有好几个需要注意的点)
    在这里插入图片描述
    注意点1:解密此处有demo,直接使用官方的即可
    在这里插入图片描述
    在这里插入图片描述
    注意点2:在使用java解密过程中,可能会出现异常java.security.InvalidKeyException:illegal Key Size,这是因为jdk本身有解密策略的限制(有限制的解密策略,好像是为了传输安全?),这需要去oracle官方下载无限制的解密策略,企业微信官方也给出了关于这个问题的解决方案(在解密demo代码的WXBizMsgCrypt类的注释中,如图)
    此处附上下载地址:
    JDK7:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
    JDK8:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
    在这里插入图片描述

    注意点3:验证回调和实际数据传输方式不同:验证是GET请求,解密后需要将明文的echostr返回回去,实际数据传输是POST请求,入参是xml格式传入(但是在链接上也会有解密需要的参数msg_signature、timestamp、nonce因此都要接收),需要返回success
    在这里插入图片描述
    在这里插入图片描述
    注意点4:此处数据类型可能有很多种,具体可以参考文档的这边,此处笔者只是接收了suite_ticket(应用ticket)类型进行处理
    在这里插入图片描述
    在这里插入图片描述
    以下是笔者自己写的demo的代码(此处用dom4j解析xml字符串):

    	@ResponseBody
        @RequestMapping(value = "/directCallback")
        public void directCallback(HttpServletRequest request, HttpServletResponse response) throws Exception {
    		System.out.println("----------------------------");
        	System.out.println("this is directCallback");
        	response.setCharacterEncoding("UTF-8");
        	
        	try {
    	    	String corpid = request.getParameter("corpid");
    	    	// 企业微信加密签名
    	        String msgSignature = request.getParameter("msg_signature");
    	        // 时间戳 与nonce结合使用,用于防止请求重放攻击
    	        String timestamp = request.getParameter("timestamp");
    	        // 校验时字符串
    	        String echostr = request.getParameter("echostr");
    	        // 随机数 与timestamp结合使用,用于防止请求重放攻击
    	        String nonce = request.getParameter("nonce");
    	        
    	        System.out.println("msgSignature: "+ msgSignature);
    	        System.out.println("timestamp: "+ timestamp);
    	        System.out.println("echostr: "+ echostr);
    	        System.out.println("nonce: "+ nonce);
    	    	if("GET".equals(request.getMethod())) { // get请求表示是验证
    	    		System.out.println("corpid:" + corpid);
    		        String echostrDecrypt = null;
    		        // 校验服务商公司id
    		        WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(sToken, sEncodingAESKey, corpid);
    				echostrDecrypt = wxcpt.VerifyURL(msgSignature, timestamp, nonce, echostr);
    				System.out.println("verifyurl echostr: " + echostrDecrypt);
    		    	
    		    	response.setCharacterEncoding("UTF-8");
    		    	response.getWriter().write(echostrDecrypt);
    	    	}else { // post请求表示是真实数据
    	    		// 获取传过来的xml信息(密文)
    	        	InputStream ins = request.getInputStream();
    	        	BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(ins));
    	        	StringBuilder postData = new StringBuilder();
    	        	String line = null;
    	        	while((line=bufferedReader.readLine()) != null) {
    	        		postData.append(line);
    	        	}
    	        	System.out.println("postData:"+ postData);
    	    		
    	    		WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(sToken, sEncodingAESKey, suiteid);
    	    		String info = wxcpt.DecryptMsg(msgSignature, timestamp, nonce, postData.toString());
    	    		System.out.println("解析的明文是:" + info); // 此处明文是xml信息
    	    		
    	    		// 解析xml,若InfoType是suite_ticket的话,说明是发送ticket的响应方式
    	        	Document doc = DocumentHelper.parseText(info);
    	        	Element root = doc.getRootElement();
    	        	String infoType = root.elementTextTrim("InfoType");
    	        	if("suite_ticket".equals(infoType)) { // 此处只是进行suite_ticket的处理,若是需要其他的处理需要在这里添加类型
    	        		String suiteTicket = root.elementTextTrim("SuiteTicket");
    	        		System.out.println("拿到的ticket是: " + suiteTicket);
    	        	}
    	    		
    	    		response.getWriter().write("success");
    	    	}
    	    	System.out.println("----------------------------");
    		} catch (Exception e) {
    			//验证URL失败,错误原因请查看异常
    			e.printStackTrace();
    		}
        }
    

    第五步:建立应用授权流程(注意主体是应用),此处不是登陆者登录之后授权才能用那个流程,而是在安装应用时候的授权流程。此时是为了获取应用的access_token(第三方应用凭证)和permanent_code(永久授权码),有了access_token和permanent_code,加上之前的suite_ticket(应用ticket),很多其他的信息就可以获取到了
    1.在服务商网站配置ip访问白名单,这一点不可忽略,否则无法访问
    在这里插入图片描述
    在这里插入图片描述
    2.获取企业的access_token(第三方应用凭证),此处ticket就是企业微信官方每10分钟推送的suite_ticket(应用ticket),还需要应用的id和应用的secret
    在这里插入图片描述
    3.安装应用获取auth_code(临时授权码),此处只是进行安装测试,若需要正式上线需要走上线流程
    在这里插入图片描述
    使用另一个企业进行此处的安装测试之后,之前实现的回调接口会接收到临时授权码的信息
    在这里插入图片描述
    在这里插入图片描述
    4.获取到permanent_code永久授权码
    在这里插入图片描述
    有了access_token、permanent_code和suite_ticket之后,很多的信息都可以获取到了

    第六步:用户登录时的用户授权流程,在用户登录的时候,需要用户授权应用,获取去到用户信息,将用户与第三方应用中的用户关联起来。此处,企业微信官方采用的是oauth2授权方式,oauth2授权流程可以参考文档此处--------此处请注意下后面的更新,有神坑!!!!!
    在这里插入图片描述
    1.构造oauth2授权链接,此处若是后面需要获取到用户的手机号、邮箱等敏感信息,必须要使用手动授权方式(即scope=snsapi_privateinfo),服务商管理后台中创建的应用,必须支持获取用户的敏感信息,这两个条件只要有一个不满足就无法获取到用户的手机号等敏感信息。
    在这里插入图片描述
    在这里插入图片描述
    构造的oauth2链接可以放在前端,也可以由后端配置后返回给前端,但是oauth2链接必须由前端跳转(不能由后端重定向,当然内部转发跳不到服务器之外的地址更不行),因为此处关联了设置的可信域名,可信域名关联前端使用的JS-SDK因此必须填前端域名
    在这里插入图片描述
    2.获取user_ticket(用户ticket),此处不能搞混user_ticket和suite_ticket,一个是用户的ticket,通过code获取;一个是应用的ticket,企业微信每10分钟推送给回调函数(笔者就搞混了,一直以为是哪里获取的不对导致获取不到用户信息)
    在这里插入图片描述
    3.若是还需要获取到用户的敏感信息,则根据access_token和user_ticket就可以拿到了,当然,是建立在可以拿到的前提下(应用允许获取、oauth2采用手动授权、用户同意授权)
    在这里插入图片描述
    获取到用户信息之后,就可以将企业微信的用户信息和业务的用户信息关联起来,主要的流程就可以疏通了!

    第七步:服务端配置客户端需要的签名signature等信息,在客户端的JS-SDK中,必须要先调用wx.config接口来进行权限的校验之后,才能够进行JS其他接口的调用,此时就需要服务端将签名signature、时间戳timestamp、随机串nonceStr、登录公司corpId返回,如下图
    在这里插入图片描述
    此处需要注意的点不少,只要有一点对不上,那么就可能造成流程走不下去。

    注意点1:
    使用JSSDK之前,一定要填写可信域名并且校验,否则JSSDK的接口无法使用。此处需要注意的点是,若是测试授权应用的话,进行验证之后,一定要重新安装才能生效,笔者就因为没有重新安装卡了很久,一直以为是配置的问题。
    在这里插入图片描述
    在这里插入图片描述

    注意点2:
    生成签名的算法需要参考客户端附录中的这篇文档(如图),由于之前第三方应用凭证已经获取到,此处jsapi_ticket也可以拿到了
    在这里插入图片描述
    注意点3:
    生成签名算法的时候,需要的url参数一定不要加上#后面的参数
    在这里插入图片描述
    注意点4:
    校验签名算法工具:https://work.weixin.qq.com/api/jsapisign
    此处只能校验签名是否正确,但是不能保证传入的url正确,因此需要确保传入的url包含“?”后面的参数但是不包含#后面的参数,如“http://xxx.xxx.xxx/xxx/?test=xxx”,可使用UUID生成nonceStr,再加上时间戳和url,将代码生成的signature和工具生成的signature进行校对保证生成算法的正确性
    在这里插入图片描述

    注意点5:
    在附录最后一篇中,有各种错误的结局方案,但是此处说要将生成signature进行转码,但是亲测转码之后是不行的,不转码可以
    在这里插入图片描述

    以上就是笔者疏通整个企业微信流程的踩过的坑,当然因为也是第一次接触,还有很多还不熟悉,可能还有很多谬误,若是读者发现那里不对,还望不吝指教!


    20190814更新
    更新遇到的两个神坑:
    神坑1.官方文档上提供了获取登录用户的手机号、邮箱等敏感信息
    在这里插入图片描述
    在构建oauth链接的时候,仅仅有一个“已废弃”的字样,可是在使用中还是可以继续使用的,到这里,一切还没有其他问题,正常使用。。。
    在这里插入图片描述
    于是!!!!!在上线审核的时候,获取用户敏感信息的应用,是审核不通过的!!!
    在这里插入图片描述
    找客服仔细确认之后(普通客服到技术客服到产品客服),才知道现在以后不支持获取用户敏感信息的应用上线的!!!!!(可能以后会支持,但是目前不支持,时间节点是20190814)

    神坑2.在服务商的应用中,是可以填写多个可信域名的(3个),但是亲测,只有第一个有效!!!另外的两个无论是构建oauth链接,还是使用jssdk(此处笔者调用的是wx.config这个jssdk无效,报错为not reliable domain),均无效(也是找客服确认后才知道,只有第一个是有效的)
    在这里插入图片描述

    展开全文
  • 1.企业应用和第三方应用的区别 2.课程讲授的内容 《入门篇》 1.自建应用和第三方应用的区别 自建应用:自己开发自己用【这种方式比较简单,可以简单创建一个试一下】 三方应用:我们作为服务商,开发给其他...

    同步视频资源https://www.bilibili.com/video/BV1zP4y1M7LV?spm_id_from=333.999.0.0

    概述

    1.企业应用和第三方应用的区别

    2.课程讲授的内容

    《入门篇》

    1.自建应用和第三方应用的区别

    自建应用:自己开发自己用【这种方式比较简单,可以简单创建一个试一下】

    第三方应用:我们作为服务商,开发给其他企业使用

    2.创建第三方应用【主要提供回调服务】

    (一)配置参数说明

    企业微信应用接入指引 - 接口文档 - 企业微信开发者中心

    (二)开发提供指令回调url

    回调配置 - 接口文档 - 企业微信开发者中心

    A:快速开发一个nodejs服务

    B:使用签名和加解密库【包括get和post】

    @wecom/crypto - npm

    C:需要将服务提供到公网,企微才能回调

    这里需要配置内网穿透

    1.natapp: https://www.jianshu.com/p/7dfa336b0fec

    2.frp: https://www.cnblogs.com/chywx/p/10939966.html

    D:解析出suite_ticket,并缓存

    E:获取第三方应用的token【这里使用postman调试】

    第三方应用接口 - 接口文档 - 企业微信开发者中心

    3.安装的五种方式

    (一)上架到应用市场(需要上架)==>这种方式与方式二推送一样

    (二)在服务商后台点击安装测试(不需要上线)

    (三)在服务商后台通过推广二维码安装(需要上线)

    (四)在服务商后台通过推广二维码包id,生成推广链接(需要上线)

    构建注册链接:

    推广二维码(原注册定制化) - 接口文档 - 企业微信开发者中心

    第一步:获取注册码

    第二步:构建注册链接

    (五)应用授权安装链接(不需要上线)

    构建授权安装链接

    企业授权应用 - 接口文档 - 企业微信开发者中心

    第一步:获取预授权码

    第二步:提供redirect_uri服务,引导用户进入授权页

    redirect_uri = http://api.feelok.top:6001/getCompanyAuthCode

    这个授权链接一定需要用户点击,不能直接在浏览器上访问

    第三步授权成功,返回临时授权码

    (六)总结:

       A.共同点与区别

    共同点:

    所有方式都是在安装应用后,会给我们服务商提供企业临时授权码

    区别:

    只有应用授权安装链接是通过redirect_uri推送企业临时授权码,

    其他的方式都是通过指令回调url推送企业临时授权码

    授权通知事件 - 接口文档 - 企业微信开发者中心

      B.获得了企业临时授权码,我们就有能力获得企业信息了

    a.企业安装后,会通过指令回调接口推送企业临时授权码  或者   通过redirect_uri传递企业临时授权码

    b.通过临时授权码换取企业永久授权码

    获取企业永久授权码 - 接口文档 - 企业微信开发者中心

    c.有了企业id和永久授权码,就可以获得企业的token,也就是可以调用企业相关的接口了

    4.获取部门和人员

    (一)获取部门信息

    获取部门列表 - 接口文档 - 企业微信开发者中心

    (二)获取成员信息

    获取部门成员 - 接口文档 - 企业微信开发者中心

    5.授权登录

    开始开发 - 接口文档 - 企业微信开发者中心

    (一)构建oauth2授权链接

    (二)根据code获取用户身份

    (三)获取用户详细信息

    6.获取客户和客户群

    (一)获取用户的客户

    获取客户列表 - 接口文档 - 企业微信开发者中心

    (二)获取客户群

    获取客户群列表 - 接口文档 - 企业微信开发者中心

    7.扫码登录和业务设置url登录

    接入指引 - 接口文档 - 企业微信开发者中心

    (一)扫码登录

    A.构建登录二维码

    https://open.work.weixin.qq.com/wwopen/sso/3rd_qrConnect?appid=xxxxxxxx&redirect_uri=http%3A%2F%2F%2Fapp&state=web_login@gyoss9&usertype=admin

    B.通过redirect_uri获得auth_code

    C.获得服务商token

    D.通过auth_code获得用户信息

    获取登录用户信息 - 接口文档 - 企业微信开发者中心

    注意:

    (二)业务设置url登录

    A.配置业务url【在服务商应用的详情页面】

    B.点击进入服务商后台,获得auth_code

    C.获得服务商token

    D.通过auth_code获得用户信息

    获取登录用户信息 - 接口文档 - 企业微信开发者中心

    8.消息推送

    (一)获取成员id

    (二)推送消息

    发送应用消息 - 接口文档 - 企业微信开发者中心

    9.网页jssdk调用

    使用说明 - 接口文档 - 企业微信开发者中心

    【调用一下选人api和打开会话api】

    (一)获取jsapi_ticket【企业和应用】

    (二)签名【一样的】

    (三)前端配置【分企业和应用】

    (四)前端调用jsapi【一样的】

    调用就比较简单了!!!

    (五)这里的坑

    1.获取应用的jsapi_ticket也是使用企业的token

    2.传递url的时候需要前端encode一下,后端接受后再decode一下;否者会丢失一些东西

    《实战篇》

    1.创建一个第三方应用

    回调域名等,可以先随便写一个,先把应用创建起来

    2.提供指令回调

    (一)快速搭建一个node服务

    a.安装express:npm install -g express-generator

    b.输入express 初始化node服务

    c. 启动项目

    npm i

    npm start

    d.在浏览器中测试一下

    (二)完成回调接口

    a.创建一个callback的get接口和post接口

    b.根据文档实现get接口

    c.根据文档实现post接口

    回调配置 - 接口文档 - 企业微信开发者中心

    (三)内网穿透

    这里就怎么简单怎么来把,我们就使用natapp的方式吧

    (四)将suite_ticket存入数据库

    a.解析出suite_ticket【需要用到工具xmlreader】

    b.创建一个数据库以及缓存suite_ticket表

    c.将suite-ticket放入表中

    3.提供前端页面和后端页面

    (一)创建前后端系统页面

    (二)将页面目录设置为静态目录

    4.每次在获得suite_ticket的时候,获得sui_token,并保存到数据库

    (一)获得suite_token

    (二)保存到数据库中

    5.企业安装授权应用,后端获取企业临时授权码,并且根据临时授权码获得永久授权码和企业id【永久授权码和企业id需要保存到数据库】

    (一)创建保存企业信息的表

    字段包括:corpId , corpName , permanent_code,agentid

    agentid:这个字段在消息推送的时候会用到!!!

    (二)获得企业授权时推送的企业临时授权码

    【这是使用最简单的安装测试按钮,实现企业临时授权码推送】

    (三)根据临时授权码获得永久授权码

    (四)将企业id和永久授权码存入数据库中

    6.根据永久授权码和企业id获得企业token,将企业的部门和成员同步到我们数据库中

    (一)创建成员信息表

    字段包括: userId , 部门id , 企业id,企业名称

    (二)获得企业token

    【这一步可以在获取永久码的时候直接获取到,这一步就可以省掉了】

    (三)获得部门

    (四)根据部门id,获得成员id,并存入数据库

    7.前后端系统完成授权登录

    (一)配置应用主页,实现移动端系统的登录

       A.配置应用主页,获取code

       B.前端页面提供登录按钮,调用后端登录接口

       C.提供一个登录接口【通过code获得用户信息,然后校验userId是否在我们系统,从而判断用户是否能够登录】

    (二)配置业务设置url,实现pc端系统的登录【与扫码登录一致的】

       A.配置业务设置url,pc端页面获得授权auth_code

       B.后端页面提供登录按钮,调用后端登录接口

       C.提供后端登录接口【1.获得服务商token  2.获得根据code获得用户信息 3判断用户信息是否在数据库表中】

    (三)扫码登录进入pc端系统

       A.创建一个服务商的官网页面【一般服务商页面会有三个按钮】

    B.构建安装应用链接:【https://developer.work.weixin.qq.com/document/path/90597】

    这里一定要注意,在获取预授权码之后,需要调用一下授权码配置接口

    C.构建注册按钮【https://developer.work.weixin.qq.com/document/path/90578】

    注册需要上线后才能获得推广包id,根据推广包获得注册码;这里只是做一下代码实现;后面线上了直接改一下推广包id即可

    注意:这种注册链接并不属于登录的方式,只是一般服务商网站都会提供这种注册按钮;只是用于推广企业微信,让别人安装企业微信顺带将我们的第三方应用自动安装上而已

    D.构建扫码链接【https://developer.work.weixin.qq.com/document/path/91124】

      这里不需要通过代码生成,直接拼接即可

    E.点击测试登录

    8.前端系统完成jssdk调用

    (一)从登录接口中获取corpId

    (二)获取企业jsapi_ticket

    JS-SDK使用权限签名算法 - 接口文档 - 企业微信开发者中心

    (三)获取应用jsapi_ticket

    (四)完成企业和应用参数签名

    (五)前端系统获得两种签名数据,进行配置注入,引入jssdk文件

    (六)完成选人获取人员userId

    (七)打开选中人的聊天会话

    9.后端系统对前端系统推送消息

    (一)获得进入后端系统的人员信息

    (二)根据当前登录用户所在企业,查找数据库表中的成员

    (三)使用通讯录展示组件展示成员

    通讯录展示组件 - 接口文档 - 企业微信开发者中心

    (四)开发发送消息页面

    (五)调用发送消息接口发送消息

    10.应用上线

    我们实际操作一下

    11.应用上架

    同步视频教程>>icon-default.png?t=M276https://www.bilibili.com/video/BV1zP4y1M7LV?spm_id_from=333.999.0.0

    展开全文
  • 区块链应用场景

    万次阅读 多人点赞 2019-09-05 18:47:11
    要么是统一由一个中心进行信息发布分发,要么是彼此之间定时批量对账(典型的每天一次),对于有时效性要求的信息共享,难以达到实时共享。 信息共享的双方缺少一种相互信任的通信方式,难以确定收到的信息是否是...

    一、应用场景:信息共享

    这应该是区块链最简单的应用场景,就是信息互通有无。

    1、传统的信息共享的痛点

    要么是统一由一个中心进行信息发布和分发,要么是彼此之间定时批量对账(典型的每天一次),对于有时效性要求的信息共享,难以达到实时共享。

    信息共享的双方缺少一种相互信任的通信方式,难以确定收到的信息是否是对方发送的。

    2、区块链 + 信息共享

    首先,区块链本身就是需要保持各个节点的数据一致性的,可以说是自带信息共享功能;其次,实时的问题通过区块链的P2P技术可以实现;最后,利用区块链的不可篡改和共识机制,可构建其一条安全可靠的信息共享通道。

    也行你会有这样的疑问:解决上面的问题,不用区块链技术,我自己建个加密通道也可以搞定啊!但我想说,既然区块链技术能够解决这些问题,并且增加节点非常方便,在你没有已经建好一套安全可靠的信息共享系统之前,为什么不用区块链技术呢?

    3、应用案例

    举下我们腾讯自己的应用--公益寻人链,借用如下一张好图,可以看到,区块链在信息共享中发挥的价值。

    浅谈区块链的七大应用场景

    二、应用场景:版权保护

    1、传统鉴证证明的痛点

    流程复杂:以版权保护为例,现有鉴证证明方式,登记时间长,且费用高。

    公信力不足:以法务存证为例,个人或中心化的机构存在篡改数据的可能,公信力难以得到保证。

    2、区块链 + 鉴证证明

    流程简化:区块链应用到鉴证证明后,无论是登记还是查询都非常方便,无需再奔走于各个部门之间。

    安全可靠:区块链的去中心化存储,保证没有一家机构可以任意篡改数据。

    3、应用案例

    区块链在鉴权证明领域的应用有版权保护、法务存证等,下面以版权保护为例,简单说下如何区块链如何实现版权登记和查询。

    (1)电子身份证:将“申请人+发布时间+发布内容”等版权信息加密后上传,版权信息用于唯一区块链ID,相当拥有了一张电子身份证。

    (2)时间戳保护:版权信息存储时,是加上时间戳信息的,如右雷同,可用于证明先后。

    (3)可靠性保证:区块链的去中心化存储、私钥签名、不可篡改的特性提升了鉴权信息的可靠性。

    2016年8月,由Onchain、微软(中国)、法大大等多个机构在北京成立了电子存证区块链联盟“法链”。

    2017年12月,微众银行、仲裁委(广州仲裁委)、杭州亦笔科技有限公司共同推出的仲裁联盟链,用于司法场景下的存证;2018年3月,广州首个“仲裁链”判决书出炉。

    三、应用场景:物流链

    浅谈区块链的七大应用场景

    商品从生产商到消费者手中,需要经历多个环节(流程可能如上图所示),跨境购物则更加复杂;中间环节经常出问题,消费者很容易购买的假货。而假货问题正是困扰着各大商家和平台,至今无解。

    1、传统是防伪溯源手段

    以一直受假冒伪劣产品困扰的茅台酒的防伪技术为例,2000年起,其酒盖里有一个唯一的RFID标签,可通过手机等设备以NFC方式读出,然后通过茅台的APP进行校验,以此防止伪造产品。 咋一看,这种防伪效果非常可靠。但2016年还是引爆了茅台酒防伪造假,虽然通过NFC方式验证OK,但经茅台专业人士鉴定为假酒。后来,在“国酒茅台防伪溯源系统”数据库审计中发现80万条假的防伪标签记录,系防伪技术公司人员参与伪造;随后,茅台改用安全芯片防伪标签。

    但这里暴露出来的痛点并没有解决,即防伪信息掌握在某个中心机构中,有权限的人可以任意修改。(备注:茅台的这种防伪方式,也衍生了旧瓶回收,旧瓶装假酒的产业,防伪道路任重而道远)。

    2017年05月贵阳数博会上,小马哥就建议茅台防伪使用区块链;那么区块链和物流链的结合有什么优势呢?

    2、区块链+物流链

    区块链没有中心化节点,各节点是平等的,掌握单个节点无法实现修改数据;需要掌控足够多的节点,才可能伪造数据,大大提高伪造数据的成本。

    区块链天生的开放、透明,使得任何人都可以公开查询,伪造数据被发现的概率大增。

    区块链的数据不可篡改性,也保证了已销售出去的产品信息已永久记录,无法通过简单复制防伪信息蒙混过关,实现二次销售。

    物流链的所有节点上区块链后,商品从生产商到消费者手里都有迹可循,形成完整链条;商品缺失的环节越多,将暴露出其是伪劣产品概率更大。

    3、应用案例

    目前,入局物流链的玩家较多,包括腾讯、阿里、京东、沃尔玛等。 据说,阿里的菜鸟在海淘进口应用区块链上,走在了前面,已经初步实现海外商品溯源,国际物流及进口申报溯源、境内物流溯源;下一步就是生产企业溯源了。下图是网上流传的关于阿里的菜鸟在海淘场景运用区块链的示意图。

    浅谈区块链的七大应用场景

    另据最新消息,在3月份的第三届全球物流技术大会上,腾讯与中国物流与采购联合会(简称“中物联”)正式签署战略合作协议,并发布了区块链物流平台。强强联合,想象空间很大。

    四、应用场景:供应链金融

    1、传统的供应链单点融资

    在一般供应链贸易中,从原材料的采购、加工、组装到销售的各企业间都涉及到资金的支出和收入,而企业的资金支出和收入是有时间差的,这就形成了资金缺口,多数需要进行融资生产。我们先来看个简单的供应链(复杂的我也不了解(⊙o⊙)),如下图:

    浅谈区块链的七大应用场景

    我们再来看看图中各个角色的融资情况:

    核心企业或大企业:规模大、信用好,议价能力强,通过先拿货后付款,延长账期将资金压力传导给后续供应商;此外,其融资能力也是最强的。

    一级供应商:通过核心企业的债权转让,可以获得银行的融资。

    其他供应商(多数是中小微企业):规模小、发展不稳定、信用低,风险高,难以获得银行的贷款;也无法想核心企业一样有很长的账期;一般越小的企业其账期越短,微小企业还需要现金拿货。这样一出一入对比就像是:中小微企业无息借钱给大企业做生意。

    2、区块链+供应链金融

    面对,上述供应链里的中小微企业融资难问题,主要原因是银行和中小企业之间缺乏一个有效的信任机制。

    假如供应链所有节点上链后,通过区块链的私钥签名技术,保证了核心企业等的数据可靠性;而合同、票据等上链,是对资产的数字化,便于流通,实现了价值传递。

    浅谈区块链的七大应用场景

    如上图所示,在区块链解决了数据可靠性和价值流通后,银行等金融机构面对中小企业的融资,不再是对这个企业进行单独评估;而是站在整个供应链的顶端,通过信任核心企业的付款意愿,对链条上的票据、合同等交易信息进行全方位分析和评估。即借助核心企业的信用实力以及可靠的交易链条,为中小微企业融资背书,实现从单环节融资到全链条融资的跨越,从而缓解中小微企业融资难问题。

    3、应用案例

    比较成熟的还没看到,目前腾讯也已入局。

    五、应用场景:跨境支付

    1、传统跨境支付

    浅谈区块链的七大应用场景

    跨境支付涉及多种币种,存在汇率问题,传统跨境支付非常依赖于第三方机构,大致的简化模型如上图所示,存在着两个问题;

    流程繁琐,结算周期长:传统跨境支付基本都是非实时的,银行日终进行交易的批量处理,通常一笔交易需要24小时以上才能完成;某些银行的跨境支付看起来是实时的,但实际上,是收款银行基于汇款银行的信用做了一定额度的垫付,在日终再进行资金清算和对账,业务处理速度慢。

    手续费高:传统跨境支付模式存在大量人工对账操作,加之依赖第三方机构,导致手续费居高不下,麦肯锡《2016全球支付》报告数据显示,通过代理行模式完成一笔跨境支付的平均成本在25美元到35美元之间。

    2、区块链+跨境支付

    这些问题的存在,很大原因还是信息不对称,没有建立有效的信任机制。

    浅谈区块链的七大应用场景

    如上图所示,区块链的引入,解决了跨境支付信息不对称的问题,并建立起一定程度的信任机制;带来了两个好处。

    效率提高,费用降低:接入区块链技术后,通过公私钥技术,保证数据的可靠性,再通过加密技术和去中心,达到数据不可篡改的目的,最后,通过P2P技术,实现点对点的结算;去除了传统中心转发,提高了效率,降低了成本(也展望了普及跨境小额支付的可能性)。

    可追溯,符合监管需求:传统的点对点结算不能不规模应用,除了信任问题,还有就是存在监管漏洞(点对点私下交易,存在洗黑钱的风险),而区块链的交易透明,信息公开,交易记录永久保存实现了可追溯,符合监管的需求。

    3、应用案例

    应用现状:Ripple、Circle、招商银行等已经入局。

    六、应用场景:资产数字化

    1、实体资产存在的问题

    实体资产往往难以分割,不便于流通

    实体资产的流通难以监控,存在洗黑钱等风险

    2、区块链实现资产数字化

    资产数字化后,易于分割、流通方便,交易成本低

    用区块链技术实现资产数字化后,所有资产交易记录公开、透明、永久存储、可追溯,完全符合监管需求

    3、应用案例

    还是以腾讯的微黄金应用为例,继续借用腾讯区块链官网(trustsql.qq.com)上的图片,可以看到,在资产数字化之后,流通更为方便了,不再依赖于发行机构;且购买0.001g黄金成为了可能,降低了参与门槛。

    浅谈区块链的七大应用场景

    七、应用场景:代币

    本来不像把代币加进来的,但说到区块链,始终绕不开代币;因区块链脱胎于比特币,天生具有代币的属性,目前区块链最成功的应用也正是比特币

    1、传统货币存在的问题

    传统的货币发行权掌握在国家手中,存在着货币滥发的风险

    元朝自1271年建立后,依然四处征战,消耗大量的钱财和粮食,为了财政问题,长期滥发货币,造成严重通货膨胀,多数百姓生活在水生火热中,导致流民四起,国家大乱,1368年,不可一世的元朝成了只有97年短命鬼,走向了灭亡。

    1980年津巴布韦独立,后因土改失败,经济崩溃,政府入不敷出,开始印钞;2001年时100津巴布韦币可兑换约1美元;2009年1月,津央行发行100万亿面值新津元(如下图)加速货币崩溃,最终津元被废弃,改用“美元化”货币政策。2017年津巴布韦发生政变,总统穆加贝被赶下台。

    浅谈区块链的七大应用场景

    传统的记账权掌握在一个中心化的中介机构手中,存在中介系统瘫痪、中介违约、中介欺瞒、甚至是中介耍赖等风险。

    2013年3月,塞浦路斯为获得救助,对银行储户进行一次性征税约58亿欧元, 向不低于10万欧元的存款一次性征税9.9%,向低于10万欧元的一次性征税6.75%。

    2017年4月,民生银行30亿假理财事件暴露,系一支行行长伪造保本保息理财产品所致,超过150名投资者被套。

    2、区块链如何解决这些问题

    浅谈区块链的七大应用场景

    比特币解决了货币在发行和记账环节的信任问题,我们来看下比特币是如何一一破解上面的两个问题。

    滥发问题:比特币的获取只能通过挖矿获得,且比特币总量为2100万个,在发行环节解决了货币滥发的问题; 账本修改问题:比特币的交易记录通过链式存储和去中心化的全球节点构成网络来解决账本修改问题。

    链式存储可以简单理解为:存储记录的块是一块连着一块的,形成一个链条;除第一个块的所有区块都的记录包含了前一区块的校验信息,改变任一区块的信息,都将导致后续区块校验出错。因为这种关联性,中间也无法插入其他块,所以修改已有记录是困难的。

    而去中心化节点可以简单理解为:全球的中心节点都是平等的,都拥有一模一样的账本,所以,任一节点出问题都不影响账本记录。而要修改账本,必须修改超过全球一半的节点才能完成;而这在目前看来几乎不可能。 既然账本无法修改,那要是记账的时候作弊呢? 首先,比特币的每条交易记录是有私钥签名的,别人伪造不了这个记录。你能修改的仅仅自己发起的交易记录。

    其次,是关于记账权问题:比特币的记账权,通过工作量证明获得,可以简单理解为:通过算法确定同一时刻,全球只有一个节点获得了记账权,基本规律是谁拥有的计算资源越多,谁获得记账权的概率越大,只有超过全网一半的算力,才可能实现双花。

    备注:比特币的模式是不可复制的,比特币已经吸引了全球绝大多数的算力,从而降低51%攻击发生等问题;其他的复制品基本无法获得相应的算力保证。

    目前,比特币还存在着51%和效率低等问题有待解决,另外,关于交易本身的信任问题是个社会问题,比特币是没有解决的,也解决不了的。

    3、应用案例

    最具代表性的当然是比特币,也不用多说了。

    备注:代币这块真的不看好,比特币目前吸引了全球绝大部分的算力,有独一无二的算力资源作为支撑还稍好一点,其他的代币和传统的货币相比,其背后缺乏国家和武力为其做信用背书,且夺取了国家发币带来的各种好处(如宏观调控),仔细想想就知道有多不靠谱。

    浅谈区块链的七大应用场景

    结论

    区块链应用的场景肯定还有很多,但很多都还不大明朗,暂时就先梳理以上7种场景,顺便归纳一下。

    浅谈区块链的七大应用场景

    区块链这么火,但实际应用的案例却少之又少;我认为,并非区块链技术目前存在的问题阻碍了其大范围的应用,也不是区块链可以应用的场景非常少,区块链商用牵扯到各方的利益,其最大的难题可能远在技术之外。

    展开全文
  • 钉钉三方企业应用开发快速入门

    千次阅读 2021-10-11 15:37:01
    修改前端配置7、添加体验组织并开通应用8、推送Ticket9、项目关联钉钉应用 钉钉三方企业应用开发快速入门 1、创建小程序 1.1. 登录开发者后台 登录钉钉开发者后台,选择应用开发-三方企业应用-小程序,点击创建...
  • 使用位于全局作用域中的蓝本时,定义路由错误处理程序的方法几乎与单脚本应用一样。 与应用一样,蓝本可以在单个文件中定义,也可使用更结构化的方式在包中的多个模块中创建。为了获得最大的灵活性,我们将在应用...
  • 现在,3部分将带您完成在Android模拟器或真实设备中构建运行应用程序的步骤。 我们将首先使用Gradle构建应用程序的应用程序包(APK)文件。然后,我将向您展示如何在Android模拟器或实际设备(在本例中为Kindle ...
  • 第7章 现实应用

    2020-08-25 18:07:37
    未知 第7章 现实应用 到目前为止,我们演示的例子都比较抽象,因为主要目的是说明函数式编程迥异的思维模式。不过当学习到一定程度之后,我们肯定要回到现实中来检验学到的理论。 我们就用这一章来探访函数式思维在...
  • win7系统下卸载应用程序的步骤

    千次阅读 2021-07-16 01:22:50
    windows7系统下,不用借助三方软件,通过控制面板就可以实现应用程序的轻松卸载,在win7系统下,卸载应用程序可以用同样的办法,而且比windows7系统下操作的还要简单。win7系统下卸载应用程序的步骤:1、在win7...
  • 第7章 控件应用

    2020-03-18 15:43:47
    第7章 控件应用 控件是Visual Basic的核心内容,Visual Basic通过控件能够迅速实现指定功能。另外,控件能够Visual Basic的可视化开发环境很好地结合,灵活地在项目中添加删除。Visual Basic有大量的控件,涉及...
  •  企业微信三方应用与企业微信自建应用也不相同,一定要区分! !! 本地测试完成,没问题了,直接提交上线,就OK啦!!!1.官网地址:https://work.weixin.qq.com/,首先(注册/)登陆,然后点击右上角,服务商...
  • 第7章 多媒体应用实战 在移动智能设备应用中,多媒体是一个重要的应用领域。从严格意义上讲,多媒体包含了屏保、动画、图片、音频、视频相机等应用。在本书的第6章中已经详细介绍了图形图像动画方面的基本知识。...
  • 前言本教程适用于多款智能手表,包括并不限于华米运动手表3,如果你同为华米运动智能系列那么百分百对你有帮助,其他智能手表请自行举一反三本文所使用到的工具Windows 10电脑华米运动手表 3手表自带数据线开启三...
  • 第7章 图像识别及在广告搜索方面的应用 第7章 图像识别及在广告搜索方面的应用 7.1 视觉搜索 7.2 方法系统 7.3 评测 7.4 用于演示的Visual Shopping Assistant应用程序 7.5 相关工作 7.6 本章小结 读者可以想象一...
  • 未知 7 章 像高手一样玩转数据 本章将学到许多操作数据的方法,它们大多与下面这两种内置的 Python 数据类型有关。 字符串 Unicode 字符组成的序列,用于存储文本数据。 字节字节数组 8 比特整数组成的序列,...
  • web服务器和应用服务器的区别与分析

    万次阅读 多人点赞 2018-07-10 15:28:21
    一、Apache应用服务器 简介: Apache是世界使用排名一的Web服务器。它可以运行在几乎所有广泛使用的计算机平台上。源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a ...
  • 12章 主题母版的应用 主题母版自带的幻灯片效果以及版式的划分,可以为幻灯片的制作提供一定的基础,避免从零开始。 视频链接 关于本章知识,本书配套教学资源中有相关的多媒体教学视频,视频路径为【主题...
  • 应用分为:原生应用(Native APP)、轻应用(webapp或者h5app)混合应用(HibidAPP) 其中流应用和应用现在多基于浏览器开啊H5应用程序 小程序是基于微信平台(软件之上的软件) 原生应用又称本地应用,UI体验好...
  • 未知 9 章 操作系统和应用的关系 热身问答 阅读正文前,让我们先回答下面的问题来热热身吧。 问题 1. 监控程序的主要功能是什么? 2. 在操作系统上运行的程序称为什么? 3. 调用操作系统功能称为什么? 4. ...
  • Android 将自己的应用改为系统应用

    万次阅读 多人点赞 2016-11-30 16:19:11
    所谓系统程序就是system/app目录中的程序,普通应用转换成系统程序后有稳定、减少...一种:使用ADB命令将app安装在system/app目录下转载:android 将自己的应用改为系统应用这种方法的原理就是:1、把apk文件移动到
  • 安卓应用转换器app,把你手机上的三方安装软件,转换为系统应用!让这些不是出厂或是刷机自带的软件也能系统一样拥有更多的权限,并且不会受返回出场设置干扰!安卓应用转换器app介绍安卓应用转换器能够将普通...
  • OSI层模型基础知识及各层常见应用

    万次阅读 多人点赞 2018-03-16 15:37:33
    OSI层模型基础知识及各层常见应用   目录 二、 OSI基础知识 三、 OSI的层结构 四、 OSI分层的优点 五、 OSI模型与TCP/IP模型的比较 六、OSI层模式简单通俗理解   模型把网络通信的工作分为7层。1...
  • 20章 应用数学

    2021-03-29 13:59:18
    20章 应用数学 20章 应用数学 数学是一种严谨、缜密的科学,学习应用数学知识,可以培养系统架构设计师的抽象思维能力逻辑推理能力,在从事系统分析工作时思路清晰,在复杂、紊乱的现象中把握住事物的本质,...
  • 出现这个情况: 1、如果你已经安装了,就先卸载...3、以上都没问题的话,你手机是不是有手机分身功能,如果有,看另一个手机分身是不是已经安装了不同签名同包名的应用,是的话就卸载已安装的,跟一个情况一样; ...
  • 未知 14 章 应用编程接口 近些年,Web 应用有种趋势,那就是业务逻辑被越来越多地移到客户端,开创出了一种称为富互联网应用(RIA,rich Internet application)的架构。在 RIA 中,服务器的主要功能(有时是...
  • Arduino与通用技术 第7章 电子控制系统综合应用——智能小车 智能小车可以按照预先设定的模式在一个环境里自动运作,不需要人的管理,可应用于科学勘探、试验等方面。智能小车通常具有寻迹、寻光、避障等功能,也...
  • 数据库原理及其应用

    千次阅读 2021-01-01 13:43:40
    3、逻辑结构设计 4、物理结构设计:数据库在物理设备上存储结构存取方法 5、软件维护 第五章:关系数据库语言SQL 第六章:关系数据库模式设计 第七章:T-SQL 语言 存储过程 触发器 第八章:数据库安全 8.1、用户...
  • 未知 5 章 应用的生命周期 iOS 应用启动时会调用 UIApplicationMain 方法,并传入 UIApplicationDelegate 类的引用。委托接收应用范围的事件,并且有明确的生命周期, application:...
  • 未知 2 章 应用的基本结构 本章将带领你了解 Flask 应用各部分的作用,编写并运行一个 Flask Web 应用。 2.1 初始化 所有 Flask 应用都必须创建一个 应用实例 。Web 服务器使用一种名为 Web 服务器网关接口...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,143,752
精华内容 457,500
热门标签
关键字:

和第七应用一样的