DISCUZ漫游平台移植记

2011年 20月 03日 03:30

想让自己的网站支持应用平台 个人能力有限.不可能自己搭建应用平台 国内的开源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} 添加了 {app} 应用";s:9:"titleData";a:1:{s:3:"app";s:69:"小小战争";}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对比 看异常的地方 即可

tags: