DISCUZ漫游平台移植记
date:星期日, 三月 20th, 2011 at 3:30 上午 Categories:discuz
想让自己的网站支持应用平台
个人能力有限.不可能自己搭建应用平台
国内的开源SNS程序中 只有DISCUZ提供了应用平台(漫游)
GOOGLE 的OPENSOCIAL 目前没找到方法
FACEBOOK 的是被墙的..
刚好THINKSNS 也已经使用了漫游平台.
那应该是没问题的.. 用THINKSNS 的代码看了下差不多是从UCHOME 移过来的
所以打算吧THINKSNS 的这个移动到我自己的SNS程序上

首先是注册站点 获取
['site_key']
['my_site_id']
['my_site_key']
这3个参数 用过DISCUZ 产品都知道
我在图中标明了
常见问题:
已被注册
参考DISCUZ官方解决方法
使用DISCUZ 提供的附件
根据需要选择“恢复漫游数据”或“重新注册到漫游平台”

我就不小心重复注册了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:"<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对比 看异常的地方 即可

2011.04.07 3:02 下午
那么多数据,看的头都大了。
[Reply]
2011.04.15 12:32 上午
非常的荣幸来到您的空间,为您的空间加点人气(*^__^*) 嘻嘻……【www.ed371.com|E点数据】
[Reply]
2011.04.30 9:11 下午
这个牛了
[Reply]
2011.05.03 9:35 上午
Das hört sich super an, ich bin begeistert!
[Reply]
2011.05.13 10:05 上午
顶,好帖子
[Reply]