海内识别应用程序方法

出自海内开放平台

跳转到: 导航, 搜索

一个 API 访问请求例子

http://api.hainei.com/restserver.php?method=friends.get&session_key=...&api_key=...&call_id=1219665881.2752&v=1.0&sig=...

注意 参数可以使用 GETPOST 两种方式提交。

正常的API访问需要在“开发者”应用程序中设置你服务器的IP地址。当出现 Unauthorized source IP address 错误,而你又不清楚自己服务器所使用的IP时,可以尝试在服务器上访问 http://open.hainei.com/getip.php 取得服务器对外访问时的 IP。

一般每次访问 API 所需要的参数

  • method 即上例中的 friends.get,表明要使用的方法
  • session_key 当前登录用户使用的 session key,在初始化时即可得到
  • api_key 应用程序对应的 API key
  • call_id 保持递增的序列,同一 session 后一请求的值应大于前一请求的值。推荐使用当前微秒时间值,比如 PHP 的 microtime 函数。
  • v 版本号,请设置为 1.0
  • sig 使用如下算法得到的程序签名

// 要发出的请求的参数,不包含 sig,不进行 urlencode,做成 key = value 形式的参数数组。此处参数必须与后面发出的请求完全一致。
params = array of args to the request, not counting sig, formatted in non-urlencoded arg=val pairs
// 数组按 key 来排序
sorted_array = alphabetically_sort_array_by_keys($params);
// 把数组连接,生成一个字符串(中间没有 & 符号)
request_str = concatenate_in_order(sorted_array);
// 上一步得到的字符串与 secret key 连接在一起,得到新串的 MD5 值,即为签名
signature = md5(concatenate(request_str, secret_key));


MD5 之前的字符串样例:
api_key=f7461bcd3d3f2fed16242e4604849fb5call_id=1225684116.58method=friends.getsession_key=NR5kFkAlMPwnFWAIeC-p3MSSf4X3QrGMId6Jj5EK9gICSW40FmmN7gv=1.0a9dd19aa6c70076c924ed1e68ce7e285

最后访问的 URL 样例:
http://api.hainei.com/restserver.php?api_key=f7461bcd3d3f2fed16242e4604849fb5&call_id=1225684116.58&method=friends.get&session_key=NR5kFkAlMPwnFWAIeC-p3MSSf4X3QrGMId6Jj5EK9gICSW40FmmN7g&v=1.0&sig=644e880420482176ff2dd6b44753dc7d


用 PHP 得到签名的代码如下:
<?php

$secretKey = 'Secret Key'; // 填入你的应用程序的 secret key
$params = array('method' => 'friends.get', 'api_key' => '...', ...); // 需要用实际 http 请求的参数代替样例
ksort($params);
$str = '';
foreach ($params as $key => $value) {
    $str .= $key . '=' . $value;
}
$signature = md5($str . $secretKey);

?>


链接: 首页   接口 (API)

查看
个人工具