如何进入个人新浪开放平台台

人人网 - 抱歉
哦,抱歉,好像看不到了
现在你可以:
看看其它好友写了什么
北京千橡网景科技发展有限公司:
文网文[号··京公网安备号·甲测资字
文化部监督电子邮箱:wlwh@··
文明办网文明上网举报电话: 举报邮箱:&&&&&&&&&&&&微信开放平台和公众平台的区别?
微信公众平台已逐渐被媒体(自媒体、媒体)、企业、团体等重视,纷纷开发自己的公众平台,最近又注意到微信有开放平台,类似于APP,可是具体的功能和其效果有何不同呢?希望能有大神解答~谢谢!
按投票排序
1.公众平台面向的时普通的用户,比如自媒体和媒体,企业官方微信公众账号运营人员使用,当然你所在的团队或者公司有实力去开发一些内容,也可以调用公众平台里面的接口,比如自定义菜单,自动回复,查询功能。目前大多数微信通过认证之后,都在做这个事情。2.开放平台面向的开发者和第三方独立软件开发商。我觉得开发平台最大的开放就是微信登录。当年腾讯没有花大力气去做统一登录这个事情,导致目前各个网站都要弄一套登录机制。好在他们现在认清了局势。开发者或软件开发商,通过微信开放提供的平台和接口,可以开发适合企业的电子商务网站,扫描二维码进去一个游戏界面,然后去购买商品等。当然后续开放平台要开放支付接口,那么类似口袋通这种软件开发厂商,就可以为大型,中小企业提供微信小店这种服务和软件了。
微信开放平台主要面向App开发者。通常是拥有成熟的应用程序之后,通过开放平台将内容分享至朋友圈或发送给某个微信好友/群聊。例如QQ音乐分享、美图秀秀修改过的照片直接发朋友圈或聊天。微信公众平台强调信息流。既可以向微博一样主要推送内容,也可以像10086一样根据用户发来的消息进行智能回复或后台实现某些功能。还可以将用户引向HTML5页面,实现更复杂的功能。
微信开放平台也即open平台,公众平台即是mp平台,目前open 平台是腾讯移动生活电商团队——微生活在使用,以下是区别。
详解微生活商家后台与公众平台的区别微信是腾讯近两年崛起的一个新颖的语音沟通工具,随着微信5.0内测版本的发布,扫描二维码、条形码、甚至街景的功能;摇一摇增加了视频功能;公众账号分为企业账号和订阅账号等最新变化的出现,使得微信“横扫一切”“O2O神器”等标签更加流行。而从去年开始流行的“微信扫描二维码 免费获得会员卡”的微生活团队正是腾讯移动生活电商旗下的全新专注生活电子商务与O2O的解决方案提供商,大街小巷铺满商家二维码掀起了全国范围内的微信扫描风潮。据了解微生活有专门的商家后台帮助商家解决CRM会员关系管理、精准营销等问题,与微信的公众平台后台有所区别,一下即是笔者总结的二者的一些区别和联系。1、 整体概览 5.0之前的微信公众平台媒体属性貌似更强一些,打开微信公众平台第一眼看见的就是实时消息。这里可以看到账号当前增加了多少粉丝、有多少用户留言。其次的重点就是开放接口,微信作为一个大的平台需要给各位开发者以更多的方便,绿色的公众平台API文档方便开发者直接点击进入,高级功能中的开发模式更为开发者提供了广阔的空间。然而微生活商家后台则没有实时消息这个功能,因为用户的留言都已经被商家的多客服系统处理完毕,这与微生活的泛会员管理与营销平台的定位有很大的关系,时时解决会员的问题,帮助用户完成订单、订位、订房等工作,甚至是陪用户闲聊和调戏,实现用户在移动端的良好体验。总之,微生活商家后台更适合商家去做CRM 管理和会员营销。从二者的首页中笔者读出一个趋势——大数据管理,对于商家和媒体来说,数据管理必不可少,而从两个平台首页明显的数据折线图来看,二者都focus 在大数据上。微信开拓了一种语音沟通的新时尚,而腾讯微生活开拓了创新的富媒体会员营销平台,解决企业数据库管理、会员关系管理、会员精准营销等问题,为传统商企打开了进军移动互联网的大门。2、 首页微信公众平台功能模块包括:首页、实时消息、用户管理、群发消息、素材管理、设置、高级功能。打开微信公众平台即可看到实时消息、每日新增订阅人数和每日接收消息数的曲线图表,可以使得用户时时把控每日情况,但是无法看到多日的消息对比。首页右侧是系统公告 ,公众平台接口更新等通知。微信未来要做的是个平台,开放平台,首页的公告是为微信的开发者进行更多的指引。微生活商家后台功能模块包括:首页、会员、交易、消息、活动、设置 。打开微生活商家后台首先看到的是会员趋势图,包括新增总量、线下扫码增量、线上传播新增量等分类,这比微信公众平台的的会员增长图坐标要复杂一些。因为微生活会员卡是用户通过打开微信扫描二维码后,获得的一张存在于微信中的虚拟会员卡,而二维码可以存在在海报、桌贴、宣传册等线下物料上,也可以放置在微博、微信、论坛、网站等线上渠道。微生活首页右侧呈现的是今日和昨日的新增会员和交易次数、会员带动交易额。这与微生活致力于成为传统商企精准的泛会员管理与营销平台有着很大的关系,商家人员登录商家后台可以清楚明了的看到自家店面的整体销售情况和会员增长情况,时时把控商机和运营情况。 3、 用户管理与会员微信公众平台和微生活商家后台都有数据统计的需求,公众平台对于用户的数据增长情况在首页已经有折线图,在用户管理模块只显示右侧的总体数量。此外用户管理模块还可以将用户进行分类以及修改备注等功能。微生活商家后台的会员模块,有会员查询和会员统计两个功能。会员查询操作,可以在顶端通过选择所属门店和入会时间查询相应的会员详情和会员数量;会员统计功能则可以查看到近期会员的增长折线图,可以时时了解每日的会员增长情况,及时调整商家的一些营销策略。4、 群发消息与消息、活动微信公众平台的群发消息中分为新建群发消息和已发送两个板块。在新建群发消息中按照用户组别或者性别、地区等属性进行分别发送,发送内容的类型有文字、语音、图片、视频、图文消息(单条图文和多条图文)。微生活商家后台中,有消息和活动两个模块,这两个模块就相当于是公众平台的群发消息模块,比公众平台的功能更“营销化”。消息模块也分为群发消息和消息记录两个板块,和公众平台的功能类似,而活动模块则比较新颖,分为促销活动和优惠券两个板块,开卡有礼是促销活动中的其中一个活动,商家可以通过赠送菜品、饮品、优惠券等方式吸引用户首次开卡,同时也可以在一些节假日进行一些促销活动,增加进店消费率和销售流水。优惠券分为给所有会员送券、单次消费送券、激活开卡未使用会员、唤醒沉睡会员、累积消费送券等功能,帮助商家做好沉睡会员唤醒和刺激会员多次进店消费的需求。通过设置不同时间、不同形式,针对不同人群进行精准营销,这是微生活商家后台的最大亮点,也是公众平台和微生活商家后台本质的不同。当然这也是商家愿意与微生活进行合作得理由。这里多解释一下,相信很多使用CRM系统的商家会关心一个问题就是在微生活商家后台发券后怎么进行统计,怎么与自家的收银系统等进行对接,据微生活相关人员介绍:从商家预备发券或做活动开始,就会有pos认证或者码库认证帮商家完成整个闭环流程,而微生活目前也制定了标准文档,帮商家CRM系统可以与微生活商家后台完成对接,以便解决商家的更多问题。5、 设置以及高级功能微信公众平台的设置里是一些账号信息和认证信息,另一个功能是公众号手机助手,即绑定一个个人微信号用以发送消息。而公众平台的高级功能则是一个本质亮点,高级功能分为编辑模式和开发模式,编辑模式中可以手动设置“被添加自动回复”“消息自动回复”“关键词自动回复”等,开发模式则是针对开发者的一些高级设置,匹配公众账号的更多个性化需求。而微生活商家后台的设置和公众平台中的编辑模式有些类似。看起来微生活商家后台没有开发者模式这个板块,但是微生活已经实现帮助商家开发自定义菜单等功能,甚至多客服系统已经帮助商家完成了线上支付引导,更给力的是微生活团队可以帮助商家开发更多的定制功能。作为腾讯唯一一只官方团队,微生活带给商家的体验是其他公司不可比拟的。6、 微生活独有的交易模块微生活商家后台的交易包含交易查询和交易统计两个功能。根据交易门店和交易流水号进行交易查询,可以方便商家掌控自己的交易信息。交易统计包含交易次数趋势、会员交易额趋势、特权使用量统计等,这些折线图或者趋势图会帮助商家更好的了解自己的相关销售和交易情况,也可根据相应趋势来调整自己的预算或者物力安排,这对商家的大数据管理有很大的帮助。
善用现有的平台:平台与否,顺势而为平台不是一天就可以建成的,一个成功的平台生态圈更是日积月累的结果,同时还需要各个方面的配合。成功的平台我们可以看到很多,而失败的平台我们却看不到。如早已销声匿迹的电商平台8848、服装平台PPG等,它们都只是昙花一现,还未来得及开放,便草草收场。可见成功的可持久的平台如凤毛麟角。百度创办于2001年,阿里巴巴和腾讯更早。在那个年代,有几个中国人听说过互联网?更别说利用互联网进行沟通或商业宣传了。ABT们在初创业时,承受着互联网各种风险的洗礼,耗费巨资,经历了十几年的时间才建立起了如此庞大的平台生态圈。如果只是考虑到互联网自身产业的发展,才造成了这些平台成长周期过长的话,那看看近两年迅猛发展的微信又如何?微信有腾讯这个庞大的平台帝国做基础,可谓是占尽了天时地利人和的先机,但尽管如此,也需要经历几年的时间,不断地进行创新和升级,同时还面临着陌陌、米聊等强大的竞争对手。微信一路上过五关斩六将,才形成了今天的局面,而将来它是否还能继续屹立不倒,现在还不得而知。对创业者来说,想要做好一个平台,现阶段面临着很多的困难。创业者面临着阿里、腾讯等巨头,要找到自身的立足点是非常困难的,既然这样,创业者还不如去思考怎样利用这些平台帝国帮助自己成功创业。创业者不能一开始就想着要做一个什么样的平台,所有的平台企业都是从一个个小小的需求满足点出发的,先解决一小部分人的需求,再去解决一大部分人的需求,让自己成为领域内的专家和权威,成为这个领域内最好的企业。然后才能在慢慢发展的过程中,发现自己客户的需求量越来越大,使用自己产品的人也越来越多,并通过自己的产品解决他们生活中存在的一些小问题。这个时候你的平台就慢慢构成了。在这个过程中,要不断扩展体验的极致追求,这样才有可能形成一个平台型企业。所以,创业者在实力不足时,先不要着急去建立平台,而应该先去研究各个平台,研究用户的各种需求。在现有平台的基础上去个性化地满足用户的需求,在不断优化服务并赢得更多用户信任的过程中,获得更加充裕的现金流。创业者通过不断地培养和磨练自己的团队,更加深入地认识到用户的需求时,再开展建立平台的事。北京醋溜公司就是一个善用现有平台的典范。这家公司是由一名和君商学院的学生创立的,它先是从和君咨询处获得了5万元的天使投资金,在经历了漫长的7年创业之路后,在2012年成为了腾讯的金牌合作伙伴,更在前不久获得了千万元的风险投资。醋溜公司旗下有一个名为“欢乐淘”的产品,是一款专注于女性用品的导购类应用,现在在腾讯开放平台上的日活跃用户就高达80万,而新上线不久的两款欢乐淘,在IOS和安卓平台上的点击量也超过了几百万。醋溜将欢乐淘定位在为年轻人提供时尚、文化、娱乐等各个领域的互联网应用产品和内容服务,与之前市场流行的“第一代导购类先驱”有着明显的区别,其产品模式只有十个。“限量推荐”服务是其在开发过程中被反复试验的一种新型模式。比如用户在腾讯平台上天天分享的十张图、十个笑话、十件糗事等,都是由醋溜公司开发而成的。醋溜在研究中发现,浏览用户中18~24岁之间的女性占总浏览量的70%~80%,于是,欢乐淘将三四线城市的年轻女性和大学生群体作为主力推广的目标。因为他们发现这两个群体对商品的价格都较为敏感,属于QQ空间上活跃程度最高的用户,所以选择去QQ空间的开放平台上开发应用,一举获得了巨大的流量。醋溜公司将“善用现有平台”的理念贯彻得非常好,它利用腾讯平台去逐步摸索自己的平台,同时在这个平台上获得了更加充裕的资金流。创业应该顺势而为,做平台也是一样。对于创业者来说,面临着BAT巨大平台生态圈包围的现实情况,是不幸,同时也是机遇。正是它们的迅猛发展所带动起来的互联网潮流,成为创业者、传统企业可以倚靠或借势而为的强大背景。先借平台之势,善用平台的便利,成就自己的事业。待具备实力时,再复制和升级借用的平台,成就自己更大的事业。现在也有很多传统企业因为拥有坚实的背景,所以也想做自己的企业平台,但即使是这样的企业,做平台也一定要慎重。在互联网浪潮之下,许多传统企业花费巨额资金去开发企业APP,也不管其中可以放置什么内容,反正是先放了再说。完全不明白自己为什么要开发APP业务?开发之后流量从何而来?用户粘性又怎么提高?活跃度又怎样提升?有些企业做了APP,让用户去应用商店搜索,再输入密码,然后再让用户等待,然后才可以下载,估计很少有用户愿意去做如此麻烦的事情。而且像这样的APP在没有Wi-Fi的环境下根本无法实现,如果再加上用户体验不够好,那么这项APP可以说就完全失败了。所以,传统企业在转型互联网时,在现有的平台上做好内容也是个非常不错的选择。对于多数企业来说,如果想要在移动互联网中布局,首先要想的不是去做一个APP,而是先去琢磨一下怎么利用好微信这样的已经聚集了大用户的现有平台。做了APP也不一定就代表着已经进入了移动互联网,因为在现阶段许多传统企业根本没有多少机会与用户实现互动。同理,传统企业在考虑发展网络渠道时,也不要总想着要建立一个自己的官方网络商城,在你的商品还不够强势时,可以适当地借用现有的平台来发展自己的平台。反之,光是引导流量就要花费大笔的资金。利用当前发展成熟的各类电商,是刚刚触网的传统企业一个很好的选择。
简单来讲,微信公众平台是我们常见的公众号,包括订阅号、服务号和企业号,主要用于不具备太强技术开放能力,拥有一定运营能力的品牌、商户、媒体以及个人,作为一个自媒体平台或者服务窗口来用,是面向更广大的人群使用的。微信开放平台是一个开发者平台,针对的是有较强技术开发能力、能够研发同微信对接的应用的开发者来使用的,面向的是技术公司和开发者,不是面向所有人都可以使用的。因此对于分不清二者区别的人来讲,用公众平台就对了,能用得上开放平台的人肯定都是对开放平台功能有一定了解的人群。
微信公众平台:为微信公众号服务,方便所有者运营公众号,例如定制功能、用户互动、流量变现等微信开放平台:为第三方应用/网站/企业服务,让第三方调用微信的各项功能,例如扫一扫、微信通讯录、微信账号、微信付款等
用浅显易懂的语言介绍一下:微信公众平台是账号注册者自己管理自己的账号,自己拥有账号的所有权和管理权微信开放平台是账号注册者把管理权授权第三方软件开发公司,自己拥有账号的所有权
微信开发平台1、平台定位主要面对移动应用/网站应用开发者,为其提供微信登录、分享、支付等相关权限和服务。2、具体接入步骤已京东APP举例,比如京东APP需要使用微信登录、分享和微信支付功能,首先注册微信开发平台-开发者账号,并按照以下流程在微信开放平台创建京东APP:审核通过后,即可获得以下的初级权限,如要获得更高如微信支付权限,需要再单独申请,具体微信支付权限申请步骤详见附件《移动应用-微信支付权限申请流程》3、数据统计微信开放平台还提供了数据统计功能,用于开发者统计接入应用的登录、分享等数据情况。?
微信公众平台1、 平台定位微信公众平台用于管理、开放微信公众号(包括订阅号、服务号、企业号),简单的说就是微信公众号的后台运营、管理系统。2、
后台功能(以服务号介绍)(1)
基础运营功能:公众号申请成功后即可获得群发功能、自动回复、自定义菜单、投票管理;(2)
高级功能:微信公众平台还提供了以下高级的功能来丰富公众号,以下权限需要二次开发。(3)
微信支付提供公众号内微信支付能力,和移动应用一样也需要单独申请,流程和移动APP流程类似。(4)
管理:包括已关注用户管理、消息管理、素材管理(5)
推广:包括广告主(定向投放广告,精准推广自己的服务)和流量主(按月获取广告收入)(6)
统计:用户分析、图文分析、消息分析、接口分析(自定义菜单调用量)
第一个阶段:微信开放了公众平台,企业主媒体人都可以从公众平台后台进行操作,后来会有企业利用公众平台的开放出来的接口,对自己的公众号进行订制开发,让自己的公众号变的更强大更易用第二个阶段:因为第一个阶段中可以看到有些企业已经有软件开发维护公众号的需求,但这么多企业主并不是每个人都有资金和能力对自己的公众号进行定制开发,而此时微生活也好公众平台也罢,代表着腾讯利益的团队也需要丰富自己的生态,给企业以便利,给开发者和第三方软件平台以机会,三方共赢,打造一个集团军,守卫自己的山河,所以此时就出现了 “开放平台”,开放平台如果简单理解就是 微信授权给开发者或第三方软件开发商一些可以操作公众号权限,而原油的公众号若经过相应配置便可以将公众号的权限授权给开放平台的这些第三方软件,这样之后,企业主拥有公众号的所有权与使用权,第三方软件则代为管理,拥有权限使用权而这个过程在10年前阿里已经演绎完成,就是之前的淘宝第三方平台,除此之外还有现在的阿里百川。其实腾讯在QQ时代就已经有类似的东西了
微信公众平台是一个入口,有点像浏览器的感觉,个人认为,它是一种代理服务器的方式,用户所有的请求都是通过微信服务器 再发送给企业自己的服务器,然而,微信开放平台是用户自己开发应用,不需要经过微信服务器的转发,但微信开发平台支持一些组件,工具,让开发者可用很好的介入微信。
已有帐号?
无法登录?
社交帐号登录淘宝开放平台 -
新业务&机会推荐:
开放1000余个API,覆盖电商、支付、LBS、数字娱乐、广告、健康等能力}
开放淘宝账号授权,链接超过3亿月活跃用户的强大购买力}
开放电商管理能力,支撑1000亿美元级市场的商家IT管理需求}
开放云能力,基于PC/无线业务提供差异化方案}
多端支持,覆盖智能手机,TvOS,车载平台等多个移动平台}
移动端SDK开放,实现电商导购、社区、账号绑定、支付等业务闭环}
真机测试服务开放,支持移动应用开发者快速低成本地调试}
全面支持移动创业,提供免费云资源、创业基础以及投资渠道等资源}
基于电商服务市场,为合作伙伴基于电商管理服务提供变现渠道}
基于阿里妈妈广告平台,为合作伙伴提供多元的盈利模式,最大化商业价值}
日支撑百亿级并发访问;高可靠,毫秒级延时的消息服务;并队列吞吐量可达上万/秒;完美支撑历年双11海量请求,保障亿级订单同步零漏单。
基础云环境
商家解决方案中心+云技术产品矩阵
云环境高可用、低成本
打造高可靠、高效率、低成本、高安全的应用环境
大数据处理--产品免费体验
云计算产品矩阵,应用部署和运维上的完整支持
商家/服务商解决方案中心
大数据处理、供应链、商家云存储及协同解决方案
丰富的IT应用
为广大商家提供丰富的IT应用,帮助商家提升业务处理效率和质量
TAE ( TaobaoAppengine )
服务端开发效率工具+云托管环境
超大集群,按需计算,系统扩容瞬间完成
提供发布系统,日志系统,告警监控,系统压测,支持运维全面可视化,工具化
全架构PAAS
支持复杂系统架构搭建,支持后台服务和存储服务,不再局限于传统PAAS的Web服务
防DDos等网络攻击,系统可用性99.95%小米帐号接入方法
1.接入前说明
小米帐号API访问,如获取用户名片、获取米聊好友关系等都需要使用用户身份,目前小米帐号开放平台用户身份鉴权使用OAuth 2.0。
关于OAuth 2.0协议授权流程开发者可以先浏览OAuth 2.0的接口文档,熟悉OAuth 2.0的接口及参数的含义,然后我们根据应用场景各自说明如何使用OAuth 2.0。
图 1-1小米帐号授权流程图
相关名词解释:
服务提供方(resource server): 用户使用服务提供方来存储受保护的资源,这里指的是小米公司。
用户(user):存放在服务提供方的受保护的资源的拥有者。
客户端(client):要访问服务提供方资源的第三方应用,通常是网站在认证过程之前,客户端要向服务提供者申请客户端标识。
令牌(token):分发给客户端的代表访问授权的字符串。通常这个字符串对客户端来说是不透明的。令牌代表资源拥有者许可的访问作用域和持续时间,并由资源服务器和授权服务器强制保证。这个令牌可以代表一个标识符,用于检索授权信息,或以一种可验证的方式自包含授权信息(即一个包含数据和签名的令牌字符串)。令牌可能只代表纯粹的访问能力。
访问令牌(access token):客户端用来代表资源拥有者发送验证请求的令牌。 小米API将支持OAuth 2.0中Bearer Token和MAC Token的两种token形式。
刷新令牌(refresh token):客户端用来获取新的访问令牌的令牌,而不用资源拥有者的参与。
授权码(code):一个短期令牌,代表终端用户的授权。授权码用于获取一个访问令牌和一个刷新令牌。
客户端标识符(client id):分发给客户端的唯一标识,用于客户端向授权服务器标识自己。客户端标识符可以有一个对应的密钥。
2.授权模式说明
强烈推荐使用sdk接入(Android只有sdk才能实现sso)。如果没有对应的sdk请联系工程师,QQ群:。如果使用sdk接入,可以直接跳到第六步,或参考对应平台的使用说明。
Oauth2的授权模式分为code和token两种,如果想要快速开发用户可以这样判断,如果用户拥有https的服务器就使用code,如果用户只有http服务器或者木有服务器就使用token。
授权结束拿到token调用sdk,参照要使用的api,即可完成小米的帐号接入。
sdk中变量解释
申请应用时分配的App Id。
redirect_uri
授权回调地址,必须和申请应用是填写的一致。
申请scope权限所需参数,可一次申请多个scope权限,用空格分隔。
用于保持请求和回调的状态,在回调时,会在Query Parameter中回传该参数。开发者可以用这个参数验证请求有效性,也可以记录用户请求授权页前的位置。
client_secret
申请应用时分配的App Secret
用户授权时client得到的token
注意事项:
再强调强烈推荐使用sdk,如果您非要自己写一个的话请详细看此文档的前面几章,且注意以下几点
1.您可以自己先在浏览器上测试2.2授权接口的使用。
2.授权码code只能使用一次,使用第二次时就是无效。
3.第7章的帐号url不能直接使用,可以用mac加请求header后使用,注意若直接使用若是正确的会返回验证不合法。
4.测试第7章内容时若返回400请检查uri是否正确,是否加入get的请求值,若返回401请测试header是否正确。
5.请十分注意mac的当前分钟数,小米设定分钟误差不超过5分钟,如果错误我们会返回401。
3.授权接口说明
3.1授权流程说明
3.1.1授权码方式授权流程
授权码方式(authorization code)获取访问令牌(access token)的授权验证流程又被称为web server flow,适用于所有有服务端的应用,如Web/Wap站点、有服务端的手机/桌面客户端应用等。
图 3-1授权码方式授权流程
2.1.2 Implicit Grant方式授权流程
Implicit Grant方式获取访问令牌(access token)的授权验证流程又被称为User-Agent Flow,适用于所有无服务端配合的应用(由于应用往往位于一个User Agent里,如浏览器里面,因此这类应用在某些平台下又被称为Client-Side Application),如手机/桌面客户端程序、浏览器插件等,以及基于JavaScript等脚本客户端脚本语言实现的应用,他们的一个共同特点是,应用无法妥善保管其应用密钥(App Secret Key)。
图 3-2 Implicit Grant流程授权流程
3.2授权接口说明
3.2.1请求用户授权接口
URL: /oauth2/authorize
HTTP请求方: GET
表 3-1 请求用户授权参数表
申请应用时分配的App Id。
redirect_uri
授权回调地址,必须和申请应用是填写的一致。
response_type
描述获取授权的方式,目前只支持code 和 token,Code 对应 Authorization Code Flow, token对应Implicit Flow。
申请scope权限所需参数,可一次申请多个scope权限,用空格分隔。
用于保持请求和回调的状态,在回调时,会在Query Parameter中回传该参数。开发者可以用这个参数验证请求有效性,也可以记录用户请求授权页前的位置。
skip_confirm
已登录用户会进入切换帐号页面, 如果应用不需要用户切换帐号, 可以设计skip_confirm=true,黄页接入请设置为true(skip_confirm=true)
接口返回值
请求授权接口会将结果作为redirect_uri的参数返回给第三方调用者,response_type不同返回的参数也不同,区别如下:
response_type为code(Authorization Code Flow)时接口返回值如表2-2所述。
表 3-2 请求用户授权返回值表(response_type为code)
用于调用access_token,接口获取授权后的access token。
如果请求时传递参数,会回传该参数。
response_type为token(Implicit Grant Flow)接口返回值如表2-3所述。
表 3-3请求用户授权返回值表(response_type为token)
access_token
取授权后的access token。
expires_in
Access Token的有效期,以秒为单位
Access Token最终的访问范围
如果请求时传递参数,会回传该参数。
token_type
说明返回的token类型,目前是mac
mac_algorithm
mac计算的算法名称
表 3-4请求用户授权错误类型表
OAuth定义的错误码。
error_description
对error的简单描述。
/oauth2/authorize?client_id=ID&redirect_uri=&response_type=code
/oauth2/authorize?client_id=ID&redirect_uri=&response_type=token
?code=exapmle_code
3.2.2 获取访问令牌接口
URL : /oauth2/token
HTTP请求方式: GET
表 3-5获取访问令牌参数表
申请应用时分配的App Id。
redirect_uri
授权回调地址,必须和申请应用是填写的一致。
client_secret
申请应用时分配的App Secret
grant_type
此值为authorization_code 或者 refresh_token
refresh_token
当grant_type为refresh_token时,必须传该参数,置为上次下发的refresh token值
当grant_type为authorization_code时,必须传该参数,置为上次下发的code值
token_type
说明返回的token类型,目前是mac
接口返回值
接口返回值是一个Json格式字符串,具体说明如下:
第三方获取访问令牌验证通过,该接口返回Access Token相关的信息:
&access_token&: &access token value&,
&expires_in&: 360000,
&refresh_token&: &refresh token value&,
&scope&: &scope value&,
&token_type &: &mac&,
&mac_key &: &mac key value&,
&mac_algorithm&: & HmacSha1&
&openId&=&2.0XXXXXXXXX&
字段说明:
1) access_token:获取的Access Token;
2) expires_in:Access Token的有效期,以秒为单位;
3) refresh_token:用于刷新Access Token ,有效时间为10年;
4) scope:Access Token最终的访问范围,既用户实际授予的权限列表;
5) token_type: access token的类型,type值为mac;
6) mac_key: MAC加密算法对请求进行加密时的密钥;
7) mac_algorithm:MAC加密的算法,目前只支持HmacSha1
8) openId: 是v2版本所提供的一种唯一标识
如果应用验证过程中出错, OAuth 2.0返回错误信息:
&error&: &error_code&,
&error_ description &: &错误描述 &,
1) error:错误码,是一个int类型的数字;
2) error_description:一段人类可读的文字,用来帮助理解和解决发生的错误;
Grant type为authorization_code请求
/oauth2/token?client_id=ID&redirect_uri=&grant_type=authorization_code&client_secret=SECRET&code=CODE
/oauth2/token?client_id=ID&redirect_uri=&grant_type=refresh_token&client_secret=SECRET&refresh_token=REFRESHTOKEN
4. OAuth 2.0 错误码说明
OAuth 2.0实现中,授权服务器在接收到验证授权请求时,会按照OAuth 2.0协议对本请求的请求参数进行检验,若请求不合法或验证未通过,授权服务器会返回相应的错误信息,包含以下几个参数:
error: 错误码
error_description: 错误的描述信息
错误信息的返回方式有两种:
1). 当请求授权/oauth2/authorize 时出现错误,返回方式是:跳转到redirect_uri,并在uri 的query parameter中附带错误的描述信息。
2). 当请求/oauth2/token 时出现错误,返回方式是JSON文本,例如:
&error&:&errorcode&,
&error_description&:&errorCode描述&
OAuth 2.0错误响应中的错误码定义如表3-1所示:
表 4-1 OAuth 2.0 错误码表
OA_CLIENT_NOT_EXISTS(96001)
client不存在
OA_INVALID_REQUEST(96002)
请求缺少某个必需参数,或者格式不正确
OA_INVALID_CLIENT(96003)
client_id 和client_secret不匹配
OA_INVALID_GRANT(96004)
grant可是无效的
OA_UNAUTHORIZED_CLIENT(96005)
客户端没有权限使用该请求
OA_UNSUPPORTED_GRANT_TYPE(96006)
grant不被授权服务器所支持
OA_INVALID_SCOPE(96007)
scope是无效的、未知的,或格式不正确的
OA_INVALID_TOKEN(96008)
token无效或已经过期
OA_INVALID_REFRESHTOKEN(96009)
refresh token无效或已经过期
OA_INVALID_REDIRECT_URI(96010)
重定向URI与预先注册的值不匹配或者不是一个合法的URI
OA_UNSUPPORTED_RESPONSE_TYPE(96011)
响应类型不为授权服务器所支持
OA_ACCESS_DENIED(96012)
用户或授权服务器拒绝了请求
OA_INVALID_CODE(96013)
授权码无效或已经过期
5.Mac Token使用说明
5.1 Mac Token说明
MacToken是授权小米下发的一种访问令牌类型,使用MacToken调用API时,用MAC加密算法对请求进行加密,并将结果放到http请求的header中。MAC算法有HmacSha1和HmacSha256两种,小米API默认使用HmacSha1。下面给出Java和PHP算法示例:
Java算法示例:
public static byte[] encryptHMACSha1(byte[] data, byte[] key) {
SecretKeySpec signingKey = new SecretKeySpec(key, HMAC_SHA1);
Mac mac = Mac.getInstance(HMAC_SHA1);
mac.init(signingKey);
mac.update(data);
return mac.doFinal();
PHP算法示例:
static public function buildSignature($signString, $secret) {
$sign = base64_encode(hash_hmac('sha1', $signString, $secret, True));
return urlencode($sign);
5.2 使用方法
5.2.1 请求内容标准化
使用Mac Token需要将请求内容按照一定的规则拼接形成符合要求的标准的格式字符串,标准化字符串用于计算请求API的签名值,小米规定的格式请求字符串格式如下(\n代表换行):格式化字符串 = Nonce + \n + HTTP方法 + \n + HOST + \n + URI+ \n + QUERY+\n
由随机数和时间戳组成,格式:随机数:当前分钟数(1970 年 1 月 1 日午夜0点之间的时间差)
78(注意冒号分割)
调用API时请求方式
调用API时的域名
open.(没有http或https)
调用API时的path(必须以/开头)
/user/profile
Key按照字典序排列的query串, 内容为空的去query字段不参与签名
clientId=xxx&token=xxx
具体示例:
请求字符串= 78\nGET\n open.\n/user/profile\n clientId=xxx&token=xxx\n
5.2.2 Mac Token请求格式
采用Mac Token调用API,需要将相关签名信息放入请求的http请求的Header中。第三方在发送API请求时,要对请求进行MAC加密计算,并将结果放到请求Header中的"Authorization"字段中。Authorization字段内容如下:Authorization: MAC access_token="token value",nonce="随机码" ,mac="签名值"
字段含义说明:
access_token : 授权时下发的access_token。
nonce:随机串,由客户端按照2中规则产生的随机字符串包括当前分钟数值。
mac:签名值,根据mac算法计算生成的。Mac = HmacSha1(格式化字符串, mac_key)。
6.scope设置说明
scops反映了各个授权使用的权限(部分权限需要申请才能使用)
获取您的个人资料
获取您米聊中的好友信息
获取小米帐号OpenId
获取您绑定的安全手机号
修改您的名片信息
获取您绑定的安全邮箱
访问您的小米路由器
获取您云服务中的联系人信息
获取您的云相册数据
保存此应用的数据到小米云中
7.小米帐号的开放API
7.1获取用户名片
URL: https://open./user/profile
HTTP请求方式:GET
请求参数:
表 7-1 获取用户名片参数表
申请应用时分配的App Id。
用户授权时client得到的token
Header数据:参考第4节中方式生成Header授权信息。
返回数据:
如果访问令牌验证通过,会返回用户相关的信息, 返回格式为Json文本, 格式如下:
&result&: &ok&,
&description&: &成功&,
&miliaoNick&: &米聊昵称&,
&userId&: 米聊号,
&miliaoIcon&: 头像URL
如果访问令牌验证错误,会返回错误信息, 返回格式为Json文本, 格式如下:
&result&: &error&,
&description&: &错误描述&,
&code&: 错误码
7.2获取用户的关系列表
URL:https://open./user/relation
HTTP请求方式:GET
请求参数:
表 7-2 获取用户关系列表参数表
申请应用时分配的App Id。
用户授权时client得到的token
Heaer数据:参考第4节中方式生成Header授权信息。
返回数据:
如果访问令牌验证通过,会返回用户好友列表的信息, 返回格式为Json文本, 格式如下:
&result&: &ok&,
&description&: &成功&,
&friends&: &好友列表&
如果访问令牌验证错误,会返回错误信息, 返回格式为Json文本, 格式如下:
&result&: &error&,
&description&: &错误描述&,
&code&: 错误码
7.3获取用户OpenId
URL:https://open./user/openidV2
HTTP请求方式:GET
请求参数:
表 7-3 获取用户OpenId参数表
申请应用时分配的App Id。
用户授权时client得到的token
Heaer数据:无需签名信息。
返回数据:
如果访问令牌验证通过,会返回用户OpenID相关的信息, 返回格式为Json文本, 格式如下:
&result&: &ok&,
&description&: &成功&,
&openid&: &openid&
如果访问令牌验证错误,会返回错误信息, 返回格式为Json文本, 格式如下:
&result&: &error&,
&description&: &错误描述&,
&code&: 错误码
7.4验证用户密码接口
URL:https://open./checkPassword
HTTP请求方式:GET
请求参数:
表 7.4 验证用户密码接口参数表
申请应用时分配的App Id。
通过5.1接口获取到的userId
完整的url,以http或https开头(和redirect url在同一域名下面),用于通知密码检测结果, 必须以GET方式访问
返回数据:
返回数据是通过callback返回, callback url中返回参数如下:
xmResult:true 验证成功, false或者没有改参数表示验证错误
由随机数和时间戳组成,格式:随机数:当前分钟数(1970 年 1 月 1 日午夜0点之间的时间差)
对返回结果的签名,为了验证返回结果没有被窜改
一个新的授权码,第三方可以使用code换取新的access token(在安全性要求较高的地方可以再次用access token换取userId,以验证用户身份的合法性)
小米验证的实际帐号(不一定是第三方传上来的帐号),可能会被人恶意窜改
第三方必须在callback中验证_ xmSign, 否则造成的损失由第三方负责。
如何验证签名:
Callback格式参见4.2.1请求内容标准化,签名参数不包括_xmNonce和_xmSign签名。
签名算法使用HmacSha1, AppSecret是申请app的时候系统分配的可以,可以登录获取,每个用户不同,_xmSign = HmacSha1(Callback字符串, AppSecret)。
签名验证示例:
第三方提供Callback:
小米验证成功之后调用callback:
其中_xmNonce=21337,_xmSign= O044CQ9pBNgV3qgcVw760h3naNI=,下面是部分代码示例:
String url = &&;
URIBuilder followupBuilder = new URIBuilder(url);
List&NameValuePair& resultParaList = new ArrayList&NameValuePair&();
Map&String, String& parameterThird = new HashMap&String, String&();
for (NameValuePair pair : followupBuilder.getQueryParams()) {
if(!pair.getName().startsWith(&_&)) {
resultParaList.add(new BasicNameValuePair(pair.getName(), pair.getValue()));
parameterThird.put(pair.getName(), pair.getValue());
Assert.assertEquals(&true&, parameterThird.get(&xmResult&));
Assert.assertNotNull(parameterThird.get(&code&));
String qs = URLEncodedUtils.format(resultParaList, Constants.UTF_8_CHARSET);
String nonce = parameterThird.get(&_xmNonce&);
第三方需要check一下nonce 防止重放
String sign =getMacAccessTokenSignatureString(nonce, &GET&, followupBuilder.getHost(),followupBuilder.getPath(),qs,clientKey, &HmacSHA1&);
Assert.assertEquals(sign, parameterThird.get(&_xmSign&));
7.5 获取用户绑定的手机号码
URL: https://open./user/phoneAndEmail
HTTP请求方式:GET
请求参数:
表 7-5获取用户绑定手机号参数表
申请应用时分配的App Id。
用户授权时client得到的token
Header数据:参考第4节中方式生成Header授权信息。
返回数据:
如果访问令牌验证通过,会返回用户手机号相关的信息, 返回格式为Json文本, 格式如下:
&result&: &ok&,
&description&: &成功&,
phone:&用户手机号,没有phone返回空&
email:&用户email, 没有email返回空&
如果访问令牌验证错误,会返回错误信息, 返回格式为Json文本, 格式如下:
&result&: &error&,
&description&: &错误描述&,
&code&: 错误码
7.6上传图片
URL: https://open./user/photo/upload
HTTP请求方式:GET
请求参数:
表 7-6获取用户绑定手机号参数表
申请应用时分配的App Id。
用户授权时client得到的token
上传的图片
Header数据:参考第4节中方式生成Header授权信息。
返回数据:
如果访问令牌验证通过,会返回用户手机号相关的信息, 返回格式为Json文本, 格式如下:
“result”: “ok”,
“description”: “成功”,
“mfsFileId”: “”
“code”: 0
如果访问令牌验证错误,会返回错误信息, 返回格式为Json文本, 格式如下:
“result”: “error”,
“description”: “错误描述”,
“code”: 错误码
String url = &/user/photo/upload&;
JSONObject json = this.getMacTypeToken();
String accessToken = json.getString(&access_token&);
url = url + &?& + &clientId=& + clientId + &&token=& + URLEncoder.encode(accessToken, &UTF-8&);
System.out.println(&~~~~~~~~~~~~&);
InputStream stream = OAuthTest.class.getResourceAsStream(&/yingu.jpg&);
System.out.println(&~~~~~~~~~~~~&);
Assert.assertEquals(stream==null, false);
byte[] date =input2byte(stream);
System.out.println(date.length);
HttpClient httpClient = new HttpClient();
httpClient.getParams().setParameter(&http.connection.timeout&, new Integer(10000)); // 等等设置各种基本属性....
PostMethod post = new PostMethod(TestConstants.OPENAPIHOST + url);
post.setRequestHeader(&Referer&, TestConstants.OPENAPIHOST + url);
ByteArrayPartSource bp = new ByteArrayPartSource(&yingu.jpg&, date);
FilePart bfp = new FilePart(&yingu.jpg&, bp);
bfp.setContentType(&mutipart/form-data&);
bfp.setName(&photo&);
bfp.setTransferEncoding(null);
Part[] parts = {bfp};
post.setRequestEntity(new MultipartRequestEntity(parts, post.getParams()));
long length =
post.getRequestEntity().getContentLength();
post.setRequestHeader(&Content-Length&, length + &&);
httpClient.executeMethod(post);
String reponse=post.getResponseBodyAsString();
System.out.println(reponse);
JsonObject jsonObject=new JsonObject(reponse);
jsonObject=jsonObject.getJsonObject(&data&);
Assert.assertEquals(jsonObject.getString(&errorMessage&), &成功&);
String downloadString=jsonObject.getString(&mfsFileId&);
URL downloadUrl = new URL(downloadString);
InputStream downloadStream = downloadUrl.openStream();
System.out.println(&~~~~~~~~~~~~&);
Assert.assertEquals(downloadStream==null, false);
byte[] date2 =input2byte(downloadStream);
System.out.println(date2.length);
Assert.assertEquals(true, date2.length!=0);
7.7修改第三方名片
URL: https://open./user/changeProfileJson
HTTP请求方式:POST
请求参数:
表 7-7获取用户绑定手机号参数表
申请应用时分配的App Id。
用户授权时client得到的token
Header数据:参考第4节中方式生成Header授权信息。
返回数据:
如果访问令牌验证通过,会返回用户手机号相关的信息, 返回格式为Json文本, 格式如下:
“result”: “ok”,
“description”: “成功”,
“data”: {
Birthday:””
sex:”1”
miliaonick:”hello”
miliaoicon:” ”
“code”: 0
如果访问令牌验证错误,会返回错误信息, 返回格式为Json文本, 格式如下:
“result”: “error”,
“description”: “错误描述”,
“code”: 错误码
String url = &/user/changeProfileJson&;
List&NameValuePair& params = new ArrayList&NameValuePair&();
params.add(new BasicNameValuePair(&birthday&, &&));
params.add(new BasicNameValuePair(&sex&,
params.add(new BasicNameValuePair(&nickname&, &TestOpen&));
params.add(new BasicNameValuePair(&icon&, &&));
Response response = sendOpenApiRequest(url, &POST&, params, true);
System.out.println(response.toString());
String postString=response.body().asString();
JsonObject json=new JsonObject(postString);
Assert.assertEquals(json.getString(&result&),&ok&);
json=json.getJsonObject(&data&);
Assert.assertEquals(json.getString(&nickname&), &TestOpen&);
Assert.assertEquals(json.getString(&birthday&), &&);
Assert.assertEquals(json.getString(&sex&),
Assert.assertEquals(json.getString(&icon&), &&);
System.out.println(&~~~~~~~~~~~~~~~~~~~~~~~~~&);
//Thread.sleep(1000);
String urlGet= &/user/profile&;
response = sendOpenApiRequest(urlGet, &GET&, null, true);
System.out.println(response.toString());
String getString=response.body().asString();
json=new JsonObject(getString);
Assert.assertEquals(json.getString(&result&),&ok&);
json=json.getJsonObject(&data&);
Assert.assertEquals(json.getString(&miliaoNick&), &TestOpen&);
Assert.assertEquals(json.getString(&birthday&), &&);
Assert.assertEquals(json.getString(&sex&),
Assert.assertEquals(json.getString(&miliaoIcon&), &&);
Documentation built with .

我要回帖

更多关于 新浪开放平台 的文章

 

随机推荐