最近在帮人做一个应用,需要在“各大”开放平台站内应用中上线,本来以为吧,之前做过各个开放平台的帐号oauth同步登录之类的,和简单的接口发布什么,也都做得很顺,算是对开放平台还算比较熟悉,做起站内应用(非游戏)才发生,各种坑。而且这次做的应用有个更为坑爹的要求是不能用PHP,得要用C#,当然,作为站内应用,还必须配合JS SDK。于是万里长征快到头,便想好好总结(tucao)一下。

虽说总结的东西其实都是有时效性的,但还是拿来分享一下~

涉及到的开放平台有下面几个,虽然不全,但算是目前比较主要的几个:
腾讯系:腾讯微博、QQ空间、朋友网
新浪微博
人人网

腾讯系:腾讯微博、QQ空间、朋友网

因为腾讯下面看上去要做的很多,但基本都在一个体系下,所以就选择了先做腾讯的,虽然说腾讯系都叫做“腾讯开放平台”,应用一次创建,这几个平台都会有,而且应用ID是相同的,但其实腾讯微博算是基本独立的分支,他的应用的管理和接口都是在“腾讯微博开放平台”完成,审核也相对容易。

写在最前面的就是如果确定这三个平台都要做的话,那么最好在应用添加的时候就分别在两个平台把应用的信息都配置好,不然如果应用已经在微博开放平台上线的话,在腾讯开放平台编辑应用信息都会要进行审核,非常影响效率。

腾讯微博

  • 开发部分:

  • C# SDK不是官方提供的,虽然完成度蛮高的,不用的原因有俩,一个是SDK使用LINQ基于.net 4.0,但是项目的环境是.net 2.0,另外SDK使用的是Oauth 1.0,而站内应用的用Oauth 2.0。
  • 腾讯微博专有的OpenJS SDK,有非常多的SDK版本,对应差不多又略有差异的文档也好多版。不过好在最新版的SDK文档很方便,还配有在线直接测试的功能。
  • 不知道是不是浏览器兼容性问题,JS SDK比如在入口先初始化并请求授权一次不能在用的时候才做,另外处于保险,入口页最好加上P3P协议。
  • 在站内应用在请求授权的方法是否有回调函数最终表现的效果是不一致的很奇怪
  • 腾讯平台的授权过程是在腾讯的页面完成的,我们只要提供背景图,而测试的时候是没有这个授权的过程,直接认为有授权而进入页面的。本来觉得挺省事,但是SDK实际获取授权这个过程并不很透明,调试起来并不很方便,所以第一次做的时候觉得挺添乱的。
  • 审核部分:

  • 虽然说审核不算很快,而且因为是站内应用所以是要审两次的,第一次是对于所有应用都要进行的必要审核,主要应该是审基本资料,第二个算是上线审核,因为站内应用是需要出现在应用中心这样的地方的。
  • 审核基本不卡应用类似和内容(至少我看到很多很丑很乱的应用都是能上)但是应用中必须体现这是微博应用,大概就是你要出现腾讯微博的字样,一些涉及腾讯微博的标志和按钮要体现腾讯微博的视觉元素。没有相关的视觉元素出现,就算你有个按钮写着分享,点着也分享出去了,他也认为你是和腾讯微博无关的应用,不给通过。
  • 另外就是应用还有应用相关的预览图要和谐(嗯,最好别出现竞争对手的视觉元素,你懂的)

QQ空间、朋友网

  • 开发部分:

  • 虽说是两个平台,但实际上都是在一次的,填同一份资料,只有在应用的具体地址上可以分开设置(但实际上简单的应用应用地址只要是同一个就可以了,开放平台会在访问参数上面带上pf参数来表示用户是通过什么平台进入的)
  • API接口有两种类型,一种是必须用JS访问的接口,一种是后端接口,也就是通过JS和后端实际上访问的是不同的两套API。而且一些后端的API只有腾讯内网才能访问(意思就是必须是使用腾讯Hosting服务,没考证是一些还是全部)
  • 在我做的时候后端接口只给了JAVA和Python的SDK,不过目前PHP和C#也都有了,不过简单的应用大概是用不上。
  • 涉及到应用推广相关的好友关系和信息流都是JS接口,实际上就是JS调用出现一个dialog需要用户二次填写和确认之后进行操作。
  • 相关文档更新挺快的,JS SDK在调用时候上面也比腾讯微博方便(说是这套SDK也可以在腾讯微博使用,算是腾讯微博的另一半独立的SDK,但使用API和腾讯微博的API并不一样,很多功能没有,所以就在腾讯微博上用)
  • 没有上线的应用,是没有测试地址的,测试是必须先进入到对应的平台安装一个叫做“开发者”的应用,然后通过这个应用来打开调试应用。
  • 和腾讯微博一样,对于上线后的应用,授权的过程是在腾讯的页面完成的,我们只需要提供背景图,完成授权后能进入到应用的基本都可以认为是授权用户(到达我们的页面时候已经有token可以直接使用了)。
  • 审核部分:

  • 图标素材除了背景图都要求提供PNG格式的(目的大概是因为PNG可以有透明,但实际上用不上),但是很坑爹的还限制了图片的大小而且限制非常苛刻,有的图片使用PNG怎么都不可能小于制定的尺寸(至少我用PS做不到),于是只能先存成JPG,然后改扩展名神马的。
  • 和腾讯微博一样,应用还有应用相关的预览图要和谐(嗯,最好别出现竞争对手的视觉元素,你懂的)
  • 注册开发者的时候有一个开发者名称,然后应用资料里面还有一个开发者名称,应用中必须出现开发者名称和客服电话,而且开发者名称必须和开发者中心注册的一致,而不是和资料上的名称一致。
  • 另外一个坑爹的是应用资料里面的开发者名称限制了字数。
  • 每次审核的人都不一样,审核的标准也不一样,同一个应用,不进行修改多次不通过原因都可能是不一样的,不过客服联系很顺畅,虽然他只会和你解释不通过原因那句话是什么意思。
  • 因为审核人标准不同,所以对于应用中的站外连接的评判标准也不一样,这点非常神奇。
  • 本来以为是需要朋友网先成功上线,才能提交QQ空间,但是目前发现两个平台是可以同时提交,同时审核同时上线的。(大概是因为非游戏应用)
  • 和腾讯微博不同,应用的审核环节只有一个阶段,所以结果就是审核过和没审核过,但是审核通过的应用不会自动上线,按照腾讯的说法就是通过的应用可以非常人性化的自己来选择和决定上线时间(这个和苹果的App Store差不多),所以收到审核通过通知以后,一定还要记得重新回开放平台点一下上线,才算正式上线对用户可见。

人人网

本来以为腾讯脾气大,事多,但在领教了人人网之后,那可真是文明用语、文明用语、文明用语。

  • 开发部分:

  • 实在不能说文档特别乱,好多过期失效的内容,都不知道是多少年前的。虽然很人性化的给了一个step by step的基于Java的案例,但也还是很多年前的,当然,还是有一些参考价值。
  • 文档是好多年前的就不说了,SDK不但是第三方基于腾讯的SDK修改而成的,而且还是好多年前的,这也是我唯一一个连SDK都自己重新写的开放平台。
  • auth模式是我见过最奇葩的,大概是多种授权方式并存杂交造成的,sessionkey,oauth_token各玩各的。不过好在是站内应用。
  • 审核要求页面不能有浏览器兼容性问题,但是官方的JS SDK本身就有一些浏览器兼容性问题需要手工处理,而这些SDK的问题都会被归结到开发者没有做好浏览器兼容性。
  • 在说明和教程中都没有提通过JS SDK调用授权对话框的时候,需要设置对话框的高和框(SDK的文档中给出了设置对话框高、宽和相对位置的方法)但实际上如果没给出的话,默认的的样式是不能通过审核的,拒绝理由是“应用授权弹层标准大小480*450像素。”,所以必须手工在调用的时候强制给dialog指定大小 480*450。
  • 审核部分:

  • 这的审核也是我见过最奇葩的了,虽然说在开放平台的文档上列出了一大堆的审核要求,好歹在做的时候心里有点底。
  • 特别注意的这是我目前唯一看到要求站内应用里面一个站外连接都不能出现的开放平台 =_=
  • 审核应用会检查应用功能对于SDK的调用,一些在接口SDK里面写着是选填的项,如果没有写的话也是一个不能通过的(比如说新鲜事的action_name和action_link)
  • 审核是要有初审和复审审两次的,基本完成一次审核的时间就非常长。
  • 审核结果是不会邮件通知的,只会用站内信来通知。

新浪微博

其实做了这么多,新浪微博才算是主战场,毕竟新浪微博本身是媒体属性嘛。不过从传播角度来说,新浪微博做站内应用和站外应用其实不会差太多,站内应用其实就是牺牲一些自由度,来换取少得可怜的推广资源罢了。

  • 开发部分:

  • API文档非常全,也非常方便,不过关于站内应用的部分不知道是我语文真的不好,还是写得有些问题,有些地方看完文档上的代码还是搞不清,不过提供了DEMO下载,看完DEMO之后就明白了。
  • SDK很全,啥SDK都有,PHP的SDK是由SAE团队维护的,而C#的SDK也是非常完整的项目,基于OAuth2.0,覆盖了基本所有接口,并且提供了不同.net的文件。
  • 新浪的授权流程是需要由应用完成的,访问了应用时,新浪会POST一个加密后的用户信息 【signed_request】,是的第一次访问应用的时候才有,而且用的是POST,而且还是加密的,然后需要使用约定好的协议,通过应用密钥来解密获取具体的信息,然后对于用户有没有授权你这个应用,具体的信息是不一样的,然后如果没授权,应用需要通过新浪的JS SDK来弹出授权浮层进行授权操作。用户授权完成,刷新整个页面,新浪重新POST信息。也就是这个用户没授权就能访问应用,而由应用来判断,并且让用户来进行授权操作。
  • 审核部分:

  • 应用审核还算好,并没有特别多稀奇古怪的要求。据说涉及内容营销的应用需要先和新浪的人联系,而且是说新浪微博作为媒体认同他上面应该有内容营销,但这得属于和他们合作的范畴。
  • 大概是我RP问题,连续4次没通关的原因都是“授权完成后页面在重复刷新”,而这个问题我在各个浏览器测试都没有遇到,猜测原因是和POST和signed_request的检查token有关,不过我改都没改提交后来就莫名其妙通过了。很茫然
  • 客服没有电话,只有邮箱、在线问答和微博,邮箱是发了邮件也不会回的,在线问答的答复率和处理效率也不高,基本都是网友代替新浪回答,微博没联系过,不清楚。
  • 审核结果需要自己登录开放平台查看,并没有通知。

于是基本就这么多,有想到其他的再补充吧,最后还是那句话,虽然都在都喊着“拥抱开放”,导出跟风冒出许许多多开发平台,但是“开放本身也是一种能力”,真不是说开放就开放的,不然就真是坑爹了。