Welcome Guest ( Log In | Register )

欢迎访问本站。游客仅能浏览首页新闻、版块主题、维基条目与资源信息,需登录后方可获得内容发布、话题讨论、维基编辑与资源下载等权限。若无账号请先完成注册流程。
 
Reply to this topicStart new topic
> T.R.O.W. API Discussion
inthel
2013-09-10, 13:05
Post #1


Walk in Darkness
Group Icon
 ???
   ???

Group: Archduke
Posts: 5967
Joined: 2005-06-25
Member No.: 4


终于上线了,详情见此:
http://trow.cc/wiki/trow/api/start

更多接口持续开发中,讨论与建议请于此帖内回复。
TOP
shiningdracon
2013-09-11, 07:36
Post #2


主物质者
Group Icon
 2
   1

Group: Primer
Posts: 22
Joined: 2009-07-06
Member No.: 31792


试玩了一下,失败
我哪里理解错了吗?

流程:
  1. 创建应用
  2. 设置第三方应用专用密码
  3. get server time 【成功】
  4. calculate apptoken
  5. 用appkey, apptoken, t, uname, ucode 五个参数POST http://trow.cc/api/members/login 【失败】
输出:
QUOTE

got server time: 1378855617
apptoken: ccd8bb80005626a257e5208419d8e979
{"error":1004,"message":"请求时间逾期","time":1378855617}

代码:
CODE

$appkey = '/* my app key */';
$appsecret = '/* my app secret */';
$username = '/* my username */';
$thridpart_pw = '/* my user code */';

$json = curl_get("http://trow.cc/api/stats/time");

$obj = json_decode($json);

$t = $obj->{'data'}->{'time'};
echo "got server time: ".$t."\n";

$apptoken = md5($appkey.sha1($appsecret.$t));
echo "apptoken: ".$apptoken."\n";

$common_args = array(
                'appkey' => $appkey,
                'apptoken' => $apptoken,
                't' => $t
);

$args = array(
                'uname' => $username,
                'ucode' => $thridpart_pw
);
$json = curl_post("http://trow.cc/api/members/login", $common_args + $args);
echo $json;

上面用到的get与post函数:
CODE

function curl_post($url, array $post = array(), array $options = array())
{
        $defaults = array(
                        CURLOPT_POST => 1,
                        CURLOPT_HEADER => 0,
                        CURLOPT_URL => $url,
                        CURLOPT_FRESH_CONNECT => 1,
                        CURLOPT_RETURNTRANSFER => 1,
                        CURLOPT_FORBID_REUSE => 1,
                        CURLOPT_TIMEOUT => 4,
                        CURLOPT_POSTFIELDS => http_build_query($post)
                        );

        $ch = curl_init();
        curl_setopt_array($ch, ($options + $defaults));
        if( ! $result = curl_exec($ch))
        {
                trigger_error(curl_error($ch));
        }
        curl_close($ch);
        return $result;
}
function curl_get($url, array $get = array(), array $options = array())
{  
        $defaults = array(
                        CURLOPT_URL => $url. (strpos($url, '?') === FALSE ? '?' : ''). http_build_query($get),
                        CURLOPT_HEADER => 0,
                        CURLOPT_RETURNTRANSFER => 1,
                        CURLOPT_TIMEOUT => 4
                        );                          

        $ch = curl_init();
        curl_setopt_array($ch, ($options + $defaults));
        if( ! $result = curl_exec($ch))
        {
                trigger_error(curl_error($ch));
        }
        curl_close($ch);
        return $result;
}

TOP
inthel
2013-09-12, 22:15
Post #3


Walk in Darkness
Group Icon
 ???
   ???

Group: Archduke
Posts: 5967
Joined: 2005-06-25
Member No.: 4


QUOTE(shiningdracon @ 2013-09-11, 07:36) *

试玩了一下,失败
我哪里理解错了吗?

流程:[list=1]
[*]创建应用
[*]设置第三方应用专用密码
[*]get server time 【成功】
[*]calculate apptoken
[*]用appkey, apptoken, t, uname, ucode 五个参数POST http://trow.cc/api/members/login 【失败】
问题已修复,请重新测试,感谢支持。

PS:members/login方法需要用https连接,请设置CURLOPT_SSL_VERIFYPEER为0以保证兼容性。
TOP
ayaka
2013-10-15, 19:46
Post #4


主物质者
Group Icon
 44
   2

Group: Sinker
Posts: 85
Joined: 2013-07-09
Member No.: 54960


嗯..要想弄个比较完整的东西的话..
主题列表 有了
发帖
回帖
然后列出板块列表

这样的话功能就已经能够差不多了?
TOP
bx_bob
2013-11-04, 12:01
Post #5


比非主流还非主流的Lua原教旨主义机械师
Group Icon
 818
   15

Group: Avatar
Posts: 415
Joined: 2007-07-25
Member No.: 14794


https://github.com/btbxbob/trow-js

1. get server time: done.
2. calc apptoken: done.
3. login: done.
4. get topic: done.


This post has been edited by bx_bob: 2013-11-05, 16:30
TOP
Lyragosa
2013-12-27, 17:53
Post #6


Director of Linodas.com
Group Icon
 113
   2

Group: Avatar
Posts: 160
Joined: 2011-08-24
Member No.: 45551


以下是一些设想。

- 取得某一版面的最近10条发帖(标题,发帖时间,发帖人ID)
 - 排序方式可以有按回帖排序和按主贴排序
- 取得某一WIKI节点的最近10条更新(更新人ID,更新时间,更新的节点)
- 在WIKI上载入一个非TROW域名的json文件并展示 此条作废
- 第三方可以使用交换token的方式让第三方确认用户真实身份(类似“用腾讯微博账号登陆”)
- 第三方在确认身份之后可以(以一定的频率上限)代替此用户在某一个或者某一些版面发帖或者回帖,版面列表由第三方网站自行申请。
以上二条的隐私策略:
- 第三方只能取得用户的username(verify)
- 用户可以在trow的控制面板查看有哪些网站申请了“用TROW账号登陆”,可以主动的取消某些网站的授权。
- trow负责前置审核第三方的来源请求确保第三方是可信的正常网站。
- 透过token方式取代用户发帖的时候,用户可以在trow收到短信PM以了解详情(亦可取消)

5月29日新增

- 返回 is_password 参数 标明此贴是否为加密贴
- 返回 is_top 参数 标明此贴是否为置顶帖
- 接口中参数增加过滤参数表 开列如下
是否返回置顶帖 默认是(置顶按照回复时间正常参与排序)
是否返回加密贴 默认是
是否返回版面版主发的帖子 默认是
不返回以下用户的帖子(逗号分开用户ID)
- 如帖子中含有本版版主的回复,则增加 blue_reply=1 标明版主已经回复过,同时返回版主第一次回复的楼层号(后面不在表示)
- 上面一条对于版主自己开的帖子无效。

This post has been edited by Lyragosa: 2014-05-29, 21:25
TOP
ayaka
2014-05-12, 23:42
Post #7


主物质者
Group Icon
 44
   2

Group: Sinker
Posts: 85
Joined: 2013-07-09
Member No.: 54960


我其实没有特别具体看api的文档,所以以下有哪些已经实现了,或者有其他的想法,请指出.

1 portal的东西
2 api希望能返回一个当前用户,因为文档指出
"若省略参数或校验失败,则用户身份与权限均视为等同于Guest"
因此程序需要知道,身份是否过期,当前以什么用户登录等信息.
读帖也好,版块列表也好,这个基本上随时都需要知道这个消息.

暂时想起来这两点.
TOP
ayaka
2014-06-04, 13:26
Post #8


主物质者
Group Icon
 44
   2

Group: Sinker
Posts: 85
Joined: 2013-07-09
Member No.: 54960


希望能返回某个token, 凭此可以直接在网页版登陆, 以便做出"在网页版访问这个帖子"的功能而不需要用户重新登陆.
TOP
ayaka
2014-06-17, 22:13
Post #9


主物质者
Group Icon
 44
   2

Group: Sinker
Posts: 85
Joined: 2013-07-09
Member No.: 54960


需求最新更新功能类似首页四格。
TOP
ayaka
2015-05-29, 10:43
Post #10


主物质者
Group Icon
 44
   2

Group: Sinker
Posts: 85
Joined: 2013-07-09
Member No.: 54960


wiki文档里传参使用time参数,但无论怎么传都是时间戳缺失,请inthel姥爷查查~
TOP
inthel
2015-05-29, 13:08
Post #11


Walk in Darkness
Group Icon
 ???
   ???

Group: Archduke
Posts: 5967
Joined: 2005-06-25
Member No.: 4


QUOTE(ayaka @ 2015-05-29, 10:43) *

wiki文档里传参使用time参数,但无论怎么传都是时间戳缺失,请inthel姥爷查查~
已修正,感谢反馈。
TOP
ayaka
2015-07-10, 13:34
Post #12


主物质者
Group Icon
 44
   2

Group: Sinker
Posts: 85
Joined: 2013-07-09
Member No.: 54960


wiki这边需要接口同时返回某namespace下所有子namespace和条目列表,现在两个接口太累。
TOP
Fast ReplyReply to this topicStart new topic
 


Time is now: 2020-04-06, 07:15