您的位置:首页 > 移动开发 > 微信开发

公众号第三方平台和微信公众号平台的区别与开发步骤

2017-02-27 16:54 204 查看



我们知道通过微信公众号平台的开放API可以实现用户个性制定制的功能,我们又知道使用开放API时必须知道AppID(应用ID)AppSecret(应用密钥),而且还要配置URL(服务器地址)、Token(令牌)、EncodingAESKey(消息加解密密钥)、消息加解密方式。通过以上信息就可以获取到我们调用微信公众平台时的访问令牌(AccessToken),假设你要让第三方软件公司帮你实现个性化的定制功能就必须告知以上信息给第三方软件公司,这就会存在一定的安全性问题。为了解决这需求与安全之间的平衡问题,腾讯于是推出了公众号第三方平台。我们应该见过某些网站可以使用QQ、微信等帐号登录,公众号第三方平台也就如同这样的功能,软件公司使用公众号第三方平台提供的API实现一个登录功能,然后微信公众号平台的用户就可以直接使用公众号的帐号密码登录,然后会弹出功能授权选项,可以有选择地授权。这样第三方平台就会得到一个微信提供的访问令牌(AccessToken),使用这个访问令牌就可以调用微信公众平台的API了。

第三方开放平台的网址是:https://open.weixin.qq.com
注册之类的步骤,此处省略1024个字......


公众号第三方平台的申请资料说明



授权发起页域名:指公众号在登录授权给第三方平台方时的授权回调域名,在公众号进行登录授权流程中,必须从本域名内网页跳转到登录授权页,才可完成登录授权。授权成功后会回调授权时提供的URI,公众平台会检查URI,必须保证URI所属域名与服务申请时提供的授权域名保持一致。请注意,域名不需带有“http://”等协议内容,也不能在域名末尾附加详细目录,严格按照类似www.qq.com的写法。授权测试公众号列表:在全网发布之前,仅该列表内公众号才可进行授权,以便测试。请填写公众号的原始ID(可在公众平台网站的公众号设置页找到),最多10个,以英文“;”隔开。请至少要填写这一个:gh_ea3c04785154,这是全网发布时必须用到的。授权事件接收URL:用于接收取消授权通知、授权成功通知、授权更新通知,也用于接收ticket,ticket是验证平台方的重要凭据,服务方在获取component_access_token时需要提供最新推送的ticket以供验证身份合法性。此ticket作为验证服务方的重要凭据,请妥善保存。示例代码用到相关的库:http://mp.weixin.qq.com/wiki/static/assets/a5a22f38cb60228cb32ab61d9e4c414b.zip<?php
include_once "lib/sha1.php";
include_once "lib/xmlparse.php";
include_once "lib/pkcs7Encoder.php";
include_once "lib/errorCode.php";
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$appId=$postObj->AppId;
$encrypt=$postObj->Encrypt;
$prpcrypt=new Prpcrypt("$你的公众号消息加解密Key");
$result=$prpcrypt->decrypt($encrypt, $appId."");
if($result[0]*1==0){
$result=simplexml_load_string($result[1], 'SimpleXMLElement', LIBXML_NOCDATA);
if(isset($result->ComponentVerifyTicket)){
$phpCode=sprintf("<?php return %s;?>", var_export(json_decode(json_encode($result),TRUE),TRUE));
file_put_contents("ComponentVerifyTicketCache.php", $phpCode);
}
}
echo 'success';
?>
公众号消息校验Token: 开发者在代替公众号接收到消息时,用此Token来校验消息。用法与普通公众号token一致公众号消息加解密Key: 在代替公众号收发消息过程中使用。必须是长度为43位的字符串,只能是字母和数字。用法与普通公众号symmetric_key一致公众号消息与事件接收URL:该URL用于接收已授权公众号的消息和事件,消息内容、消息格式、签名方式、加密方式与普通公众号接收的一致,唯一区别在于签名token和加密symmetric_key使用的是服务方申请时所填写的信息。由于消息具体内容不会变更,故根据消息内容里的ToUserName,服务方是可以区分出具体消息所属的公众号。请注意:1、考虑到服务需要接收大量的授权公众号的消息,为了便于做业务分流和业务隔离,必须提供如下形式的url:www.abc.com/aaa/$APPID$/bbb/cgi,其中$APPID$在实际推送时会替换成所属的已授权公众号的appid。2、第三方平台只需获得某个业务模块的授权(而不需要获得客服与菜单权限的授权),然后在收到该业务模块事件推送后,如果该事件是允许进行5秒内被动回复消息给粉丝的,那么第三方就可以被动回复(业务模块的哪些事件推送允许被动回复用户,哪些不允许,需咨询具体业务模块)3、如果第三方希望实现实时获知公众号有新粉丝关注,只需要收到关注事件后回复success即可,不必另行回复,免得公众号出现多个第三方同时进行粉丝关注后的自动回复。网页开发域名:网页开发域名最多可以填写3个,每个以英文“;”符号隔开。每个网页开发域名会产生2个效果(请注意,勿域名不需带有“http://”等协议内容,也不能在域名末尾附加详细目录):1、在该域名和符合要求的下级域名内,可以代替旗下授权后公众号发起网页授权。下级域名必须是$APPID$.wx.abc.com的形式($APPID$为公众号的AppID的替换符,建议第三方用这种方式,若需可做域名映射),如果不按这种形式来做,旗下公众号违规将可能导致整个网站被封。2、在该域名(一级域名)内,可以代替旗下授权后公众号调用JS SDK(需要配合公众号的AppID)
【其他】白名单IP地址列表:仅当开发者IP地址在该列表中时,才被允许调用相关接口。最多填写100个IP地址,以英文“;”隔开。后续有出口IP变更时一定要先在申请资料里填写并覆盖现网,否则会被拦截。注:对于申请资料中填写的所有完整有效url,都需要做一次echo校验,以确定该url是有效可连通的,这个与普通公众号开发模式下url校验方式一致,只是使用的token为服务方的token。

若有疑问请联系QQ:82530662

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐