分类 工具 下的文章

使用Ruby on Rails进行Web开发的利弊

如今,许多初创企业和成熟企业都选择Ruby on Rails进行Web开发,例如Basecamp,GitHub,Dribble,Airbnb等公司均使用此框架构建网站。

那么,为什么要使用RoR呢?

Ruby on Rails简介

统计数据

首先,让我们看看关于Ruby on Rails框架的数据:

根据BuiltWith的数据,超过523339个网站是用这种技术创建的。
在GitHub上有近4000名程序员为RoR的发展做出了贡献。
Ruby on Rails拥有超过45000颗GitHub星。
Arc指出,一位Ruby on Rails高级开发人员在北美的平均时薪是121-140美元。

Rails的简短历史

David Heinemeier Hansson于2000年代初创建了Ruby on Rails,当时他在开发名为Basecamp的项目管理工具。

RoR框架以其快速、简便的web应用程序开发和部署而著称。因此,Ruby编程语言的创建者Matsuki Yukihiro Matsumoto将此工具称为“ Ruby的杀手级应用”。

Rails的基本原理

Ruby on Rails是一个广泛用于Web应用程序开发的开源框架。它在Ruby上运行,专注于简单性和完善的输出。

它的核心原则使企业家可以减少花费。同时,开发人员可以更快,更轻松地完成任务。

原理:避免重复代码(DRY)

该规则指出,每个代码段都需要在系统内进行唯一,明确且权威的提交。它使应用程序代码更清洁,错误更少。此外,开发人员可以重组代码或将其重构。

原理: 约定优于配置

这个概念假设您使用的系统、库和语言在默认情况下假定了许多逻辑情况。程序员需要指定web应用程序的一些非常规方面,而不是每次都创建新规则。因此,编程变得越来越简单高效。

使用Ruby on Rails进行Web开发的利弊

当涉及到web应用程序开发时,有各种各样的工具可供选择。为了做出正确的决定,您应该考虑学习曲线、可伸缩性、托管需求、安装的方便性、文档等因素。

Ruby on Rails的优点

1.安全性

近年来,网络安全问题已成为企业面临的一个严重问题。根据Cybint Solutions公司的数据,令人震惊的是64%的公司都面临过网络攻击。与此同时,62%的公司成为网络钓鱼和社会工程攻击的受害者。

从下图可以看出,后一类网络安全问题主要针对SaaS、金融机构和电子商务平台。

这些统计数据说明了为什么您未来的解决方案的安全性至关重要。

幸运的是,由于其内置机制,Ruby on Rails可以保证您的网页或应用程序不受常见漏洞的影响。有了这个框架,您的web产品将免受以下威胁:

跨站脚本攻击
SQL注入
跨站请求伪造
不安全的直接对象引用或强制浏览。
2.使用简单

RoR以直观,简洁和易于理解的语法而闻名,这对程序员来说意味着更高的可用性。

Ruby on Rails开发人员编写的代码更少。因此,创建web应用程序的过程变得更快。由于框架的可读性,对于开发人员来说,代码变得更容易理解了。

此外,由于项目遵循相同的规则和原则,程序员可以在任何开发阶段从一个Rails项目转移到另一个Rails项目。

3.开发速度快

该框架提供了大量名为gems的免费开源库。它们扩展或修改了Web应用程序的现有功能,并为开发人员提供了常见问题的解决方案。

今天,Ruby gems的数量已经超过了158700 +,下载量超过了480亿次。

此外,还有一些库扩展和实用程序类,它们构成了Active Support,负责开发Rails应用程序和技术本身。

快速开发是创业公司选择Ruby on Rails的关键原因之一。这个框架加快了MVP开发过程,即使在预算有限的情况下也可以创建高质量的Web产品。

4.社区

Ruby on Rails有一个充满活力的社区。它的活跃成员创建Ruby on Rails专用的网站、论坛和聊天室,帮助开发人员从遇到类似问题的其他程序员那里找到专业答案,并提出解决方案。

此外,社区成员还不断编写指南、手册、课程和其他教育材料。

社区托管了RailsConf,这是RoR开发人员的最大聚会,可以与该框架的其他粉丝分享经验。

5.轻松实现业务逻辑

使用Ruby on Rails可以很容易地在web应用程序中实现复杂的业务逻辑。假设您需要API。应用此框架的开发人员将很快创建它。你唯一要做的就是添加一个像Vue或React这样的前端框架,仅此而已。

6.与前端框架的兼容性

如今,React、Vue和Angular等前端框架越来越受欢迎。由于RoR易于集成,这些工具被广泛地与Ruby on Rails一起使用。您可以采用任何您喜欢的框架进行快速开发。

Ruby on Rails的缺点

1.运行速度和性能

应用程序的成功通常取决于这两个参数。客户通常希望Web应用程序能够快速加载。

谷歌的研究显示了每秒钟的延迟如何减少页面的访问量的。

有时候,Ruby on Rails的运行速度有很多不足之处。对于不到数百万用户的小型应用程序来说,这已经足够了,但在构建一个可靠的web项目时,这可能会成为一个问题。

然而,2019年8月发布的Ruby on Rails 6.0版本涉及了这个主题。新功能允许开发人员使用两个数据库在它们之间进行切换,从而提高了性能。

2.缺乏灵活性

由于组件和模块之间存在严格的依赖关系,因此Ruby on Rails是常规Web应用程序的理想解决方案。但是,当涉及具有特定功能的应用程序时,自定义可能会充满挑战。

配置路由,数据库迁移和其他元素会减慢Web应用程序的开发过程。

3.较低的知名度

在过去的几年里,Ruby on Rails的受欢迎程度一直在下降。谷歌Trends提供的统计数据表明,人们对这个框架缺乏兴趣。

尽管开发人员和支持社区的数量在增加,但该技术并未像PHP的Laravel或Python的Django那样广泛使用。可能的原因之一是其陡峭的学习曲线。通常,精通Ruby on Rails的开发人员都知道一种或两种编程语言。

对于企业所有者来说,这意味着与寻找PHP、Java或Python web公司相比,雇佣一个有经验的Ruby on Rails开发机构可能是一个相当具有挑战性的过程。与此同时,他们会得到更有经验和技术的专家。

Ruby on Rails在Web开发中的使用

让我们仔细看看最适合Ruby on Rails框架的项目。

初创企业

Ruby on Rails是初创公司最适合使用的技术之一。它在构建原型和开发MVP时得到了应用,这使得Rails备受推崇。

像GitHub、Twitter、Airbnb和Dribbble这样的流行平台最初都是用Ruby on Rails创建的。

电子商务

使用前面提到的gems,您基本上可以实现电子商务平台可能需要的任何功能。

Shopify、Fiverr、Groupon和Etsy最初都是基于Ruby on Rails的。

SaaS

在构建SaaS产品时,安全性是重中之重,而Ruby on Rails可确保Web产品的安全性。在此框架内,有很多预防措施来保护数据,包括使用大量gem进行身份验证和增加密码长度,多个内置加密库,跳过伪造请求以及使用强参数。

Basecamp,Zendesk和GitHub是使用RoR构建的最著名的SaaS应用程序。

最后

总之,Ruby on Rails是一个高效的、可伸缩的、安全的web开发框架,它可以帮助您构建任何类型的产品:从电子商务平台到SaaS解决方案。但是,RoR也有一些缺点,应该加以考虑。

敏捷项目管理需要知道的五类图表

轻量级的报表、文档可以有效地帮助敏捷团队更好的将工作可视化、辅助和客户的沟通、清晰的展示进度并且对风险进行把控,对项目管理有很好的作用。在过去的项目管理经验中,个人认为有五类图表是项目经理需要了解并且可以在日常工作中频繁使用的。

敏捷的价值观强调可工作的软件更加重要,但也不能否认文档的价值。

燃尽图 ( Burndown Chart )

燃尽图是敏捷项目中最频繁使用的一类图表,它是在工作完成前对于进度的一种可视化表示。我们经常会利用迭代燃尽图来监控用户故事是否如期进行,当然也可以利用Feature燃尽图来监控MVP的完成情况。如下图:
1.png

该图横轴是时间,纵轴是剩余的用户故事点,灰色线是按照团队平均速率用户故事应该被完成的情况(水平部分是周末),蓝色线是实际情况。通过此图我们可以很清晰地看到该迭代团队的开发速率高于期望并且差距不是很大,项目处于很健康的状况。如果蓝线一直高于灰线或者蓝线偏离灰线太远,项目经理就需要注意了,有可能的原因包括迭代计划不合理、团队开发速率出现了问题等,这会导致团队在迭代后期Backlog不够或者迭代结束不能正常完成计划的点数,所以需要项目管理者和团队一起分析具体的原因并且尽快采取措施。

速率表 ( Velocity Chart )

敏捷开发以迭代为周期开展工作,在每个迭代开始之前都会按照团队的平均Velocity来安排迭代计划,所以持续地关注团队的Velocity便于更准确地了解团队的交付能力,更合理的做迭代计划。项目经理通过Velocity表可以从总体上分析团队的开发速度是否正常、迭代计划是否合理以及对于剩余的Scope是否有交付的风险。如下图:

2.png
该图表横轴是迭代,纵轴是完成的用户故事点数,绿色表示实际完成的故事点数,灰色表示按照团队能力应该完成的故事点数。通过该图我们可以看到绿色和灰色虽然有时不同但一直比较接近,团队处于很健康的状况。如果绿色和灰色某一次或者总是差距很大,有可能的原因包括某一段时期的feature复杂度提升、团队内频繁的人员调整或者各类会议增多导致的开发时间减少等,这时候项目经理就要意识到团队可能有交付风险或者需要调整迭代计划了。

甘特图 ( Gantt Chart )

甘特图也叫横道图,是项目管理领域最常用到图表形式,一般用来展示活动或者事件随着时间和费用的变化,通常会包括活动清单、活动日期、进度期限和每天的进展。在敏捷项目管理中,我们可以借助甘特图来可视化某个特定项目(包含一系列的子活动)的进展。如下图:

3.png
该图拿数据迁移这一事件为例,横轴是时间,纵轴是完成数据迁移需要的一系列活动,相同颜色代表同样的活动,灰色表示还没有完成的工作。通过该图可以看到数据迁移的大部分工作已经完成,只剩下最后的POC2的数据分析,并且能看到各项子活动的实际耗时,便于之后类似活动的计划和安排。在敏捷项目中我们还可以借助甘特图来管理Epic用户故事的进展、预算的花费情况等,如果发现某些子活动没有进展,或者消费超过预算太多,项目经理就要考虑采取一些措施推进某些子活动或者消减某方面的投入了。

日报 ( Daily Update )

以上三类是通用的一些图表,很多项目管理软件已经支持,比如 Jira, Mingle 可以自动生成燃尽图和速率表,甘特图有专门的绘制软件。而日报是我们在离岸交付项目长期摸索的过程中使用最频繁也最重要的一个图表,对于每日的沟通非常有用。如下图:

4.png
该图分为三大块,首先是每天的用户故事进展,然后是已有的Backlog的情况,最后是开放性问题,绿色背景是每天内有变化的故事卡,黄色是由于各种原因被block的故事卡,该报表的目的不是为了汇报工作,而是为了让异地的团队和客户对于每天的进展都能一目了然。虽然我们有项目管理工具比如Jira等,但是对于离岸团队来说,通过这样的图表更能清晰地看到每天的变化,让不和我们坐在一起的客户增加信心,也便于我们把遇到的blocker可视化出来。

红黄绿报告 ( RAG Report )

RAG是Red,Amber,Green的缩写,该报告采用了和交通灯一样的呈现方式,简单易懂,可以用来做项目、人员等的健康度报表,拿项目健康度报表举例,项目经理可以按照自己项目需要关注的维度制定该表,然后定期监控每一项是否健康,对于敏捷团队来说,一周一般就可以了。如下图:

5.png
该图横向是项目是否健康需要考虑的几个维度,纵向是时间,每一个单元格里的颜色采用了RAG,红色表示该项出现了严重的问题,如果不尽快采取措施,会有不能接受的影响;黄色表示有一定的影响,团队已经在通过一些方案减小影响;绿色表示该项如期进行。通过该图可以看到该项目在过去的三周没有严重问题,总体来说比较健康,People方面虽然在第一周遇上了一些问题但是通过采取措施已经完全解决,Legal方面目前还在尝试解决。如果发现有红色出现或者某项持续绿色,项目经理就需要马上找相应人员采取措施了。

总结

任何一个报表都只是辅助工具,如果绘制或者更新报表的过程非常繁琐,那么这样的报表读起来也一定不会轻松。本文推荐的五类报表是我在敏捷项目管理过程中认为简单易用并且很有帮助的一些报表,通过使用他们,可以辅助我们管理进度、高效沟通、预知风险。当然,除了本文提到的五类报表,项目经理还需要了解一些其他的报表,比如基本的财务报表等,这部分跟团队开发模式没有太大的关系,所以没有加入到本文的范围。

2018最新中国私有云企业TOP20榜单

临近年底,各大权威调研咨询机构报告将陆续出炉。刚刚,由工信部电子一所指导,计世资讯(CCW Research)发布了《2017-2018年度中国私有云市场现状与发展趋势研究报告》,成为今年首份中国私有云市场报告。

临近年底,各大权威调研咨询机构报告将陆续出炉。刚刚,由工信部电子一所指导,计世资讯(CCW Research)发布了《2017-2018年度中国私有云市场现状与发展趋势研究报告》,成为今年首份中国私有云市场报告。其中,不仅有大量一手调研数据,观点与预测,趋势与判断,以及中国私有云市场品牌竞争力分析象限,最抓人眼球的当属中国私有云企业TOP20榜单,这也是2018年首发的第一份专业的私有云企业排行榜。

一,私有云市场高速增长

根据计世资讯的研究调查结果,中国私有云市场将继续保持高速增长的趋势,预计2018年市场规模将达到512.4亿元,同比增长27.0%。且到2022年,预计中国私有云市场规模将达到近1000亿元。随着政务云、制造业、金融云等私有云市场(三大行业市场占据超过60%市场份额)的活跃,以及各地政府推动企业上云计划的实施,为中国私有云市场的发展提供了坚实的基础。

1

2017~2018年私有云市场规模及增长

计世资讯研究表明,预计2018年中国私有云市场中硬件市场份额为66.5%,硬件下降幅度有加速的趋势。软件和服务则呈现快速上升的趋势,预计2018年市场份额分别将达到21.2%和12.3%。硬件产品在私有云解决方案中的重要性持续下降,并且随着超融合的产品的快速落地,使得项目中硬件产品的采购规模大幅降低。另一方面,软件和服务产品的重要性越发凸显,已经成为了私有云解决方案中的核心,成为了决定私有云项目成功与否的关键。

二,私有云企业竞争力分析象限

中国私有云需求旺盛,因而成为各类企业竞争的重点。依照惯例,计世资讯发布了“2018年私有云市场品牌竞争力分析象限图”,其中,最值得关注的领导者象限包括:华为、新华三、VMware、华云、EasyStack(易捷行云)五家企业。

2

2017-2018年私有云市场各品牌竞争力分析象限

与去年竞争力分析象限中的领导者象限相比,有几点值得关注:

1、VMware是唯一一家国外企业,也是唯一进入领导者象限的非OpenStack企业。

VMware虚拟化可谓市场接受程度最高,那么中国用户对VMware产品应用是否还停留在虚拟化阶段呢?“VMware作为虚拟化巨头近年来在国内保持了良好的发展势头,服务器虚拟化产品市场份额远超其他对手。”计世资讯点评也印证了这一点:“但是在私有云方面,VMware的占有率似乎并不高。我们认为这主要源于用户管理需求的复杂化导致用户需要更开放更具有兼容性的产品,比如OpenStack+KVM的产品。”

同时,计世资讯也给出了VMware建议:“当然不可否认VMware在产品特性和功能方面依然有独到的地方,VMware仍然是私有云中的举足轻重领导者。但与国内用户使用特性的结合方面仍有待提升。对应用户的定制化需求往往是私有云方案赢得市场的关键,这方面VMware正在着手改善。”

2、EasyStack是唯一进入领导者象限的云创业型企业,专业私有云厂商。

EasyStack成立四年以来在中国私有云市场上声音不断,四年获得五轮融资,已到C++轮阶段。应该说,对于云创业型企业首要比拼的就是技术能力和产品能力,才能在强手林立的私有云市场迅速占据一席之地。“EasyStack一直受到资本市场青睐,也是为数不多的在Linux、OpenStack、Ceph、Kubernetes、Docker等开源云技术领域均有涉足的企业。”计世资讯对EasyStack的点评也强调了这一点,“EasyStack强调产品化能力,在稳定性、可靠性和性能上要求较高的金融行业,以及业务场景复杂、IoT等创新应用颇多的制造行业取得了不少标杆客户和较大市场份额。”

同时,计世资讯对EasyStack另一点评价也值得关注:“EasyStack也注重用户体验,在ECS企业云纯软件的基础上推出了云计算的软硬一体化交付产品ECS Stack超融合,扩大了市场受众。”

这符合计世资讯对于中国私有云市场的一个重要判断——现阶段按照License交付模式更多的是随着超融合等硬件设备一同交付,云软硬一体化交付正在成为私有云市场的新趋势。云软硬一体化交付模式将会大幅简化私有云的部署周期,有效减少厂商的定制化工作,推动私有云产品化落地,对市场起到强劲的推动作用。

此外,华为、新华三继续以传统IT企业身份占据领导者象限,且以国内为数不多的能够覆盖从硬件到软件再到解决方案,拥有全线云产品的特色,都在政务云方面表现突出。华云则以公有云企业身份新入领导者象限,计世资讯认为全云能力是华云最大的特点和优势。

三,OpenStack是中国私有云的事实标准

以OpenStack为代表的开源技术依然在私有云市场中占据主流。计世资讯认为,作为全球部署最广泛的开源云基础设施软件,OpenStack经过8年的发展,在国内已经形成了稳定的以OpenStack为核心的开源云生态体系。尽管OpenStack在近年来受到了容器等技术的冲击,但是在中国市场中越来越丰富、越来越成熟的用户实践案例表明,OpenStack开源云技术依然保持着足够的活力。现在OpenStack发展已经越发成熟,已逐渐摆脱了最初的版本混乱,后续运营维护、改造升级成本高昂等问题。

不仅5家领导者象限企业中就有4家(华为、新华三、华云、EasyStack)以OpenStack为基础,在排名TOP20的私有云企业当中开源与闭源技术应用比例也高达7:3。在企业用户调查中也反应了这一点,被调查的283家企业用户当中,私有云建设中开源软件和闭源软件的采用百分比分别为82.4%和17.6%。

3

2018年中国私有云TOP20厂商中开源和闭源技术应用比例

四,私有云企业TOP20大排名

计世资讯《2017-2018年度中国私有云市场现状与发展趋势研究报告》同时还发布了“2018中国私有云解决方案提供商TOP20”榜单:

4

中国私有云解决方案提供商TOP20

如果将竞争力象限中的企业进行排序,计世资讯给出的中国市场私有云TOP20榜单是这样的。你怎么看?

5

计世资讯报告中提到,按照类别来看,公有云厂商、传统IT厂商、电信运营商、系统集成商、云创业型公司五大类企业都已经深度参与到了私有云市场的竞争之中(具体代表企业如上)。可见,云计算经过超过10年的发展,重点已经从公有云市场转向行业企业市场挖潜,私有云已经成为云计算下半场的重要焦点。

做微信登录前必须先了解的事情

  1. 微信公众平台与微信开放平台

微信登录分为微信开放平台和微信公众平台
微信公众平台:指使用微信内置浏览器登录网站,没有二维码显示。
微信开放平台:为PC或者移动网页登录网站,显示二维码,扫码二维码后登录。

  1. 网页授权的两种scope的区别

以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)
以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
(PS:一般的话我们会选择获取用户信息,所以一般采用snsapi_userinfo的方式。)

  1. 公众平台里的服务号与订阅号的区别

订阅号每天可以发1条群发消息。
服务号一个月内仅可以发送4条群发消息。
订阅号的消息是折叠在聊天窗口的订阅号里面的
服务号的消息是直接显示在聊天窗口里的。
订阅号不能深度开发,提供各类今日资讯,以资讯为主。
服务号可以深度定制开发,内容提供一些功能服务,以服务为主。
(PS:微信登录的话必须是认证过的服务号才可以)

  1. 网页授权access_token和普通access_token的区别

微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息;
其他微信接口,需要通过基础支持中的“获取access_token”接口来获取到的普通access_token调用。
(PS:所以access_token是不通用的。)

  1. 微信公众号的配置

开发——》接口权限——》网页服务——》网页授权获取用户基本信息 然后点击修改,修改授权回调域名

(PS:如果显示的是“未获得”,没有修改项的话,需要开通微信认证,微信认证为300元,设置——》微信认证——》开通)

  1. openid和unionid区别

openid:用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的openId unionid:如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众帐号),unionid是相同的

(PS:即如果你只是使用一种登录方式,或者微信浏览器登录,或扫码登录,使用openid即可。但是你即要使用微信在微信浏览器里登录,又要在扫码登录的话,那就需要使用unionid为确定用户的唯一。因为公众平台的openid和开放平台的openid是不一样的。)

  1. 微信开放平台配置

管理中心——》公众账号/小程序——》绑定公众账号/小程序

(PS:绑定公众平台账号后,会出现 unionid,)

  1. 微信开放平台授权回调域名配置

绑定以后,点击查看,在最下面会有,开发信息——》授权回调域

  1. AppID 和 AppSecret

微信公众平台与微信开放平台的接口文档是不一样的,所以要找到每个平台的对应的文档,所以两个平台的AppID 和 AppSecret也是不一样的。

  1. 微信接口内回调链接地址(redirect_uri)

redirect_uri:请使用urlEncode对链接进行处理

  1. 其它注意事项

在用户修改微信头像后,旧的微信头像URL将会失效,因此开发者应该自己在获取用户信息后,将头像图片保存下来,避免微信头像URL失效后的异常情况。

微信开发之分清公众平台和开放平台、公众号全局凭证和网页授权凭证

虽然公司自己的网站和给客户开发的项目中都涉及到了微信开发,自己也写了关于微信开发的两篇文章,但感觉自己对微信开发中的一些概念还是容易混淆,今天浏览了下微信公众平台、微信开放平台的后台和相关文档,算是弄清楚了下面这些东西,至于其他还没弄清楚的,以后想到了再说。

1,微信公众平台(https://mp.weixin.qq.com)和微信开放平台(https://open.weixin.qq.com)

“微信公众平台是运营者通过公众号为微信用户提供资讯和服务的平台”,登录公众平台账号后,可以看到它有一个不错的交互界面。可以提供给公司的运营人员使用,用来发布消息和提供服务。

微信公众平台的技术文档地址为:https://mp.weixin.qq.com/wiki,接口域名为:

通用域名(api.weixin.qq.com),使用该域名将访问官方指定就近的接入点;

上海域名(sh.api.weixin.qq.com),使用该域名将访问上海的接入点;

深圳域名(sz.api.weixin.qq.com),使用该域名将访问深圳的接入点;

香港域名(hk.api.weixin.qq.com),使用该域名将访问香港的接入点。

文档对接口的说明:“开发者可以根据自己的服务器部署情况,选择最佳的接入点(延时更低,稳定性更高)。除此之外,可以将其他接入点用作容灾用途,当网络链路发生故障时,可以考虑选择备用接入点来接入。”

参照技术文档中的“入门指引”和各个章节,使用相应的接口也可以自己开发程序实现向微信发布消息等业务功能。

微信开放平台:是为开发者(程序员)提供的一个平台,在这里你可以将你的公众平台下的公众号(订阅号、服务号)绑定到你的开放平台账号下,从而可以基于订阅号、服务号做更多的开发。公众号中的订阅号接口权限是有限的,比如它无法获得网页授权的权限,也就无法通过网页授权获取用户的基本信息(比如openID、unionID等)。

另外,更多的开发场景可能是这样:公司A拥有1个订阅号用来发送资讯,1个服务号用来为用户提供一些服务(比如查询资料等),还有1个pc端的网站。那么当用户使用这些订阅号、服务号和网站时,公司A的开发人员如何识别用户身份(确认用户身份的唯一性)。微信公众平台的技术文档“开始开发”--“接入指南”已经对此进行了说明:

“由于开发者经常有需在多个平台(移动应用、网站、公众帐号)之间共通用户帐号,统一帐号体系的需求,微信开放平台(open.weixin.qq.com)提供了UnionID机制。开发者可通过OpenID来获取用户基本信息,而如果开发者拥有多个应用(移动应用、网站应用和公众帐号,公众帐号只有在被绑定到微信开放平台帐号下后,才会获取UnionID),可通过获取用户基本信息中的UnionID来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的UnionID是唯一的。换句话说,同一用户,对同一个微信开放平台帐号下的不同应用,UnionID是相同的。详情请在微信开放平台的资源中心-移动应用开发-微信登录-授权关系接口调用指引-获取用户个人信息(UnionID机制)中查看。”

2,公众号全局凭证(全局唯一调用凭证)access_token和网页开发中的网页授权access_token

两者不是一个东西,但在调用接口时很容易混淆。简单来说,网页授权token只在微信授权网页登录时会用到,其他业务一般不会用到,而公众号全局凭证的应用范围则比较广。

公众号的全局凭证access_token获取方法:使用公众号的AppID和AppSecret调用获取access_token的接口,AppID和AppSecret可以在可在微信公众平台官网-开发页中获得,接口调用地址和请求方式如下:

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

参数说明:

1 参数说明
2 
3 参数           是否必须     说明
4 grant_type      是       获取access_token填写client_credential
5 appid           是       第三方用户(公众号)唯一凭证
6 secret          是       第三方用户(公众号)唯一凭证密钥,即appsecret

返回数据说明:

1 正常情况下,微信会返回下述JSON数据包给公众号:
2 {"access_token":"ACCESS_TOKEN","expires_in":7200}
3 
4 参数    说明
5 access_token    获取到的凭证
6 expires_in    凭证有效时间,单位:秒
7 
8 错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):
9 {"errcode":40013,"errmsg":"invalid appid"}

网页开发主要实现的一个业务逻辑就是为用户提供微信扫码登录网站功能(或用户使用手机在微信浏览器中打开网站登录),那么这里就涉及到了微信授权给第三方(网页开发者)获取用户基本信息的问题。

网页授权access_token获得方法:先让用户同意授权获取code,然后通过code换取网页授权access_token,具体可参考:微信公众平台技术文档--网页开发--微信网页授权一节或我之前写的这篇文章:网站实现微信登录之回调函数中登录逻辑的处理--基于yii2开发的描述,获取access_token后才能够继续调用其他接口进行其他操作。

/* * @Author: your name * @Date: 2016-09-06 00:00:00 * @LastEditTime: 2020-03-17 18:29:35 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: \htdocs\usr\themes\default\footer.php */