DISCUZ漫游平台移植记

date:星期日, 三月 20th, 2011 at 3:30 上午 Categories:discuz

想让自己的网站支持应用平台
个人能力有限.不可能自己搭建应用平台
国内的开源SNS程序中 只有DISCUZ提供了应用平台(漫游)
GOOGLE 的OPENSOCIAL 目前没找到方法
FACEBOOK 的是被墙的..

刚好THINKSNS 也已经使用了漫游平台.
那应该是没问题的.. 用THINKSNS 的代码看了下差不多是从UCHOME 移过来的

所以打算吧THINKSNS 的这个移动到我自己的SNS程序上
discuz漫游平台分析

首先是注册站点 获取
['site_key']
['my_site_id']
['my_site_key']

这3个参数 用过DISCUZ 产品都知道
我在图中标明了
常见问题:
已被注册
参考DISCUZ官方解决方法
使用DISCUZ 提供的附件
根据需要选择“恢复漫游数据”或“重新注册到漫游平台”
null
我就不小心重复注册了N 次
应用部分

$_GET['id'] = intval($_GET['id']); //用户访问的appid
$app		= doQuery("SELECT * FROM {$db_prefix}myop_myapp WHERE `appid` = {$_GET['id']} LIMIT 1");
//检查数据库是否存在 (判断注册漫游ID)
$extra 		 = $_GET['my_extra'];
$timestamp	 = $_MY_GLOBAL['timestamp'];
$url 		.= '&my_current='.urlencode($current_url);
$url 		.= '&my_extra='.urlencode($extra);
$url 		.= '&my_ts='.$timestamp;
$url 		.= '&my_appVersion='.$app['version'];
$hash 		 = $_SITE_CONFIG['my_site_id'] . '|' . $qljid . '|' . $_GET['id'] . '|' . $current_url . '|' . $extra . '|' . $timestamp . '|' . $_SITE_CONFIG['my_site_key'];
$hash		 = md5($hash);
$url		.= '&my_sig='.$hash;
$my_suffix   = urlencode($my_suffix);
//IFRAME的参数  具体用抓包工具分析

如果用户已注册了 直接可以游戏了
如果没注册 那么就需注册漫游ID
但是漫游ID不返回具体错误参数
所以需要自己改一下api/my.php
给这个文件输出日志 已方便知道漫游平台与站点通信的参数

log_result(serialize($_REQUEST));//序列化了传入的参数
log_result( $server->formatResponse($response));//这个是MY输出的参数 已经是序列化了的
function  log_result($word) {
	@$fp = fopen("/home/jump/public_html/qlj/apps/myop/log.txt","a");	
	@flock($fp, LOCK_EX) ;
	@fwrite($fp,$word."\r");
	@flock($fp, LOCK_UN); 
	@fclose($fp);
}

然后我们去注册应用 再打开 日志文件

a:4:{s:6:"module";s:15:"UserApplication";s:6:"method";s:3:"add";s:6:"params";s:491:"a:18:{s:3:"uId";s:1:"6";s:5:"appId";i:1061581;s:7:"appName";s:12:"小小战争";s:7:"privacy";s:6:"public";s:12:"allowSideNav";b:1;s:9:"allowFeed";b:1;s:16:"allowProfileLink";b:1;s:14:"defaultBoxType";s:4:"wide";s:11:"defaultMYML";s:0:"";s:18:"defaultProfileLink";s:0:"";s:7:"version";s:1:"0";s:13:"displayMethod";s:6:"canvas";s:12:"displayOrder";N;s:13:"userPanelArea";s:1:"3";s:11:"canvasTitle";s:0:"";s:12:"isFullscreen";b:0;s:16:"displayUserPanel";b:0;s:16:"additionalStatus";s:3:"new";}";s:4:"sign";s:32:"3857683fdb087a0984bacca88e228f3b";}
 
a:6:{s:8:"timezone";i:8;s:7:"version";s:5:"X_VER";s:10:"my_version";s:3:"0.4";s:7:"charset";N;s:8:"language";s:5:"zh_CN";s:6:"result";i:1;}
 
a:4:{s:6:"module";s:4:"Feed";s:6:"method";s:24:"publishTemplatizedAction";s:6:"params";s:513:"a:19:{s:3:"uId";s:1:"6";s:5:"appId";i:1061581;s:13:"titleTemplate";s:40:"{actor} 添加了&nbsp;{app}&nbsp;应用";s:9:"titleData";a:1:{s:3:"app";s:69:"<a href="userapp.php?id=1061581&my_suffix=Lw%3D%3D" >小小战争</a>";}s:12:"bodyTemplate";N;s:8:"bodyData";a:0:{}s:11:"bodyGeneral";N;s:6:"image1";N;s:10:"image1Link";N;s:6:"image2";N;s:10:"image2Link";N;s:6:"image3";N;s:10:"image3Link";N;s:6:"image4";N;s:10:"image4Link";N;s:9:"targetIds";N;s:7:"privacy";s:6:"public";s:12:"hashTemplate";N;s:8:"hashData";N;}";s:4:"sign";s:32:"d87dcbc4a5656958f29efc5467914eb6";}
 
a:6:{s:8:"timezone";i:8;s:7:"version";s:5:"X_VER";s:10:"my_version";s:3:"0.4";s:7:"charset";N;s:8:"language";s:5:"zh_CN";s:6:"result";N;}
 
a:4:{s:6:"module";s:7:"Friends";s:6:"method";s:3:"get";s:6:"params";s:35:"a:1:{s:4:"uIds";a:1:{i:0;s:1:"1";}}";s:4:"sign";s:32:"b21279970e2c99f307e0a4f962abcb45";}
 
 
a:6:{s:8:"timezone";i:8;s:7:"version";s:5:"X_VER";s:10:"my_version";s:3:"0.4";s:7:"charset";N;s:8:"language";s:5:"zh_CN";s:6:"result";a:1:{i:1;a:3:{i:0;s:1:"2";i:1;s:1:"4";i:2;s:2:"12";}}}

返回参数中 最重要的是 RESULT
注册的时候需要提交很多信息 如用户资料等等.

只放了写大概 不会写文章.具体 就看输出的错误 抓包分析结果.看有没有空值的参数 再与DISCUZ跟THINKSNS对比 看异常的地方 即可

5 Responses to “DISCUZ漫游平台移植记”

  1. 葡萄籽胶囊No Gravatar

    那么多数据,看的头都大了。

    [Reply]

  2. 奇美No Gravatar

    非常的荣幸来到您的空间,为您的空间加点人气(*^__^*) 嘻嘻……【www.ed371.com|E点数据】

    [Reply]

  3. 飞一般的蜗牛No Gravatar

    这个牛了

    [Reply]

  4. nineNo Gravatar

    Das hört sich super an, ich bin begeistert!

    [Reply]

  5. 客必乐汽车租赁公司No Gravatar

    顶,好帖子

    [Reply]

Leave a Reply