微信开发者迁移指南

跳转到: 导航, 搜索
 
(未显示1个用户的29个中间版本)
第1行: 第1行:
  
如果你之前已经是微信公众平台的开发者,那么可以通过本文档了解如何快速实现迁移。
+
如果你在使用微博粉丝服务平台之前,已经做过微信公众平台的开发了,那么强烈推荐阅读本文档,了解迁移过程中需要注意的细节问题;
  
  
==第一步:申请消息接口==
+
微博粉丝服务接口在设计之初就考虑到了微信开发者的迁移问题,所以迁移成本并不高;但是开发者仍然需要针对以下三个区别做一定适配:
  
媒体、企业、个人认证帐号,在粉服平台网站,可点击进入『粉丝服务平台』高级功能,选择开启开发模式。
+
==区别一:申请消息接口时,微信填Token,微博填Appkey==
  
 +
在[[Messages_api_start|申请消息接口]]的时候,微博需要开发者填写URL和Appkey,而微信则是要求开发者填写URL和Token;
  
然后填写URL和APPKEY,其中URL是开发者用来接收微博消息服务器数据的接口URL。APPKEY为微博认证用户指定并授权要为其开发服务的开发者应用KEY,该APPKEY所对应的APP Secret,将用作生成签名(该签名会和接口URL中包含的签名进行比对,从而验证请求的安全性)。
 
  
 +
微信的Token是由开发者任意填写的字符,仅仅用于“验证URL有效性”使用;
  
<div style="text-align:center;">
+
而微博的Appkey则是由微博官方提供的,除了用于“验证URL有效性”,还用于代表开发者身份;
<img src="http://www.sinaimg.cn/blog/developer/wiki/firstdevmodel.png" style="width:auto;border:3px solid #E5E5E5;">
+
</div>
+
  
  
==第二步:验证URL有效性==
+
在“验证URL有效性”环节,开发者的Appkey所对应的AppSecret被用作生成signature签名;换句话说,微博的signature字段加密流程和微信基本是一样的,唯一的区别是微信加密用到的Token字段,微博是用AppSecret字段替代;
  
在开发者首次使用事件推送服务时,需要先通过一次校验来和微博服务器建立首次连接,具体来说:
+
==区别二:access_token生成方式不同,有效期也不同==
  
 +
微信的access_token获取方式是通过公众号的AppID和AppSecret调用相应接口来获取;
  
开发者提交信息后,微博消息服务器将发送GET请求到填写的URL上,GET请求携带四个参数:
+
而微博的粉丝服务接口调用时的access_token凭证,是在 [[Messages_api_start|申请消息接口]] 是时候,验证URL成功后,粉服平台自动返回的(如下图);
  
 +
另外,微博的粉丝服务接口的access_token凭证,还可以通过微博的OAuth2.0授权接口获取,不过这个目前在开发中,暂未上线;
  
{| border="1" cellspacing="0" cellpadding="0" width="100%" class="parameters" style="border-color:#CCCCCC;"
+
关于有效期,微信的access_token的有效期是为7200秒,需要开发者不断去刷新;
|-
+
但微博的粉丝服务接口的access_token凭证,有效期为一年,开发者可以一年之后再找蓝V帐号重新绑定或者授权;
!width="15%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|校验参数字段
+
!width="10%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|字段类型
+
!width="75%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|字段说明
+
{{rdes_args|signature|string|微博加密签名,signature结合了开发者的appsecret、和请求中的timestamp参数,nonce参数}}
+
{{rdes_args|timestamp|string|时间戳}}
+
{{rdes_args|nonce|string|随机数}}
+
{{rdes_args|echostr|string|随机字符串}}
+
|}
+
  
  
开发者收到请求后,首先通过加密后的signature参数来校验GET请求的真实性,如果确认此次GET请求来自微博服务器,原样返回echostr参数内容就可以成功建立首次连接,否则连接失败。
+
<div style="text-align:center;">
 
+
<img src="http://www.sinaimg.cn/blog/developer/wiki/getaccesstoken2014.jpg" style="width:auto;border:3px solid #E5E5E5;">
 
+
signature参数的加密规则为:
+
 
+
<div style="border-radius:3px;padding:10px 10px;background-color:#F8F8F8;border:1px solid #CCC;line-height:150%;">
+
将开发者的appsecret,timestamp参数,nonce参数进行字典排序后,将三个参数字符串拼接成一个字符串进行sha1加密
+
 
</div>
 
</div>
  
  
PHP代码示例:
+
关于微博access_token的更多介绍可以参见:
<pre>
+
<div style="font-size:14px;line-height:30px;padding:0 16px;background-color:#EFF8FB;display:inline-block;color:#fff;">[[Messages_api/access_token|获取粉丝服务平台开发接口的access token]]</div>
function checkSignature() {
+
        $signature = $_GET["signature"];
+
        $timestamp = $_GET["timestamp"];
+
        $nonce = $_GET["nonce"];
+
       
+
$appsecret= appsecret; //开发者的appsecret
+
$tmpArr = array($appsecret, $timestamp, $nonce);
+
sort($tmpArr, SORT_STRING);
+
$tmpStr = implode( $tmpArr );
+
$tmpStr = sha1( $tmpStr );
+
+
if( $tmpStr == $signature ){
+
return true;
+
}else{
+
return false;
+
}
+
}
+
</pre>
+
  
 +
==区别三:接口参数有一定差异 ==
  
==第三步:成为开发者==
+
1. 关于 [[接收消息|接收消息]] 和 [[发送被动响应消息|发送被动消息]] 两个功能,微信是推送XML格式,微博默认是推送JSON格式,但微博针对微信XML格式也做了兼容;
 
+
验证URL有效性成功后即接入生效,成为开发者。
+
 
+
 
+
建立首次连接后,后续每次微博事件推送时也都会带上signature、timestamp、nonce三个参数,开发者依然可以通过对signature的校验判断此条消息的真实性。校验方式与首次建立连接一致。
+
 
+
 
+
此后用户每次向微博认证帐号发送消息、或者产生自定义菜单点击事件时,响应URL将得到推送。
+
 
+
 
+
此外请注意,粉服平台开发接口只支持80接口。
+
 
+
 
+
==获取access token==
+
 
+
除了接收消息事件的推送服务外,微博粉服开发模式还提供了很多功能性接口,调用这些接口需要完成微博认证帐号对第三方开发者的授权,获取到access token。具体可参见:
+
 
+
 
+
<div style="font-size:14px;line-height:30px;padding:0 16px;background-color:#EFF8FB;display:inline-block;color:#fff;">[[Messages_api/access_token|获取粉丝服务平台开发接口的access token]]</div>
+
  
 +
如果第三方开发者想使用微信XML兼容格式,可以通过http://open.weibo.com/wiki/Eps/push/set_format 接口来切换自己需要的格式是XML还是JSON,更多详情可以参考[[微信XML格式兼容|微信XML格式兼容]];
  
==长连接模式==
 
  
除了以上的<b>推送接入模式</b>外,我们还提供了额外的<b>长连接接入模式</b>。该模式除了接入的技术方法不同外,功能上都是完全一样的。
+
2. 关于 [[发送客服消息|发送客服消息]] 功能,微信的调用参数是access_token,touser,msgtype和消息内容,微博的相应参数是access_token,receiver_id,type和data字段;文档里面的id,source字段主要用来支持老版本的粉丝服务,新接入的开发者请忽略之;
  
 +
微博的 [[发送客服消息|发送客服消息]] 功能目前只支持纯文本,图文消息和位置信息三种类型的格式;
  
长连接模式的特点是,第三方开发者主动建立连接请求,长连接建立后,有新的消息事件将实时返回给第三方开发者,而不是被动等待微博消息服务器的GET请求,第三方开发者的控制自主性更强一点,但相应的开发难度也会大一些。
 
  
  
喜欢长连接模式的人,可以参见如下文档,进行接入:
 
  
  
<div style="font-size:14px;line-height:30px;padding:0 16px;background-color:#EFF8FB;display:inline-block;color:#fff;">[[粉丝服务开发模式指南|粉服开发接口长连接接入指南]]</div>
 
  
  
  
 
__NOTOC__
 
__NOTOC__

2014年7月16日 (三) 10:51的最后版本

如果你在使用微博粉丝服务平台之前,已经做过微信公众平台的开发了,那么强烈推荐阅读本文档,了解迁移过程中需要注意的细节问题;


微博粉丝服务接口在设计之初就考虑到了微信开发者的迁移问题,所以迁移成本并不高;但是开发者仍然需要针对以下三个区别做一定适配:

区别一:申请消息接口时,微信填Token,微博填Appkey

申请消息接口的时候,微博需要开发者填写URL和Appkey,而微信则是要求开发者填写URL和Token;


微信的Token是由开发者任意填写的字符,仅仅用于“验证URL有效性”使用;

而微博的Appkey则是由微博官方提供的,除了用于“验证URL有效性”,还用于代表开发者身份;


在“验证URL有效性”环节,开发者的Appkey所对应的AppSecret被用作生成signature签名;换句话说,微博的signature字段加密流程和微信基本是一样的,唯一的区别是微信加密用到的Token字段,微博是用AppSecret字段替代;

区别二:access_token生成方式不同,有效期也不同

微信的access_token获取方式是通过公众号的AppID和AppSecret调用相应接口来获取;

而微博的粉丝服务接口调用时的access_token凭证,是在 申请消息接口 是时候,验证URL成功后,粉服平台自动返回的(如下图);

另外,微博的粉丝服务接口的access_token凭证,还可以通过微博的OAuth2.0授权接口获取,不过这个目前在开发中,暂未上线;

关于有效期,微信的access_token的有效期是为7200秒,需要开发者不断去刷新; 但微博的粉丝服务接口的access_token凭证,有效期为一年,开发者可以一年之后再找蓝V帐号重新绑定或者授权;



关于微博access_token的更多介绍可以参见:

区别三:接口参数有一定差异

1. 关于 接收消息发送被动消息 两个功能,微信是推送XML格式,微博默认是推送JSON格式,但微博针对微信XML格式也做了兼容;

如果第三方开发者想使用微信XML兼容格式,可以通过http://open.weibo.com/wiki/Eps/push/set_format 接口来切换自己需要的格式是XML还是JSON,更多详情可以参考微信XML格式兼容


2. 关于 发送客服消息 功能,微信的调用参数是access_token,touser,msgtype和消息内容,微博的相应参数是access_token,receiver_id,type和data字段;文档里面的id,source字段主要用来支持老版本的粉丝服务,新接入的开发者请忽略之;

微博的 发送客服消息 功能目前只支持纯文本,图文消息和位置信息三种类型的格式;





文档更新时间: 2014-07-16