文档上说:“在申请组件时填写的组件首页里,用 get 方法获取参数名为 session_key 的参数。”
但是始终获取不到session key
跪求:如何获取session key( 组件实验室)
这是根据文档写的:<?php
$api_key = '**************************';
$secret = ************************;
$url = 'http://rest.kaixin001.com/api/rest.php';
*
$session_key = $_GET['kx_session_key']; print_r("获取GET参数".$_GET."<br>");
if (empty($session_key)) {
$session_key = $_COOKIE["kx_session_key"];
}else{
setcookie("kx_session_key",$session_key, time()+3600*4);
//setcookie("kx_session_key",$session_key, time()+3600*4);
}$param = array(
'api_key' => $api_key,
'method' => 'users.getInfo',
'uids' => '100099,100100',
'format' => 'json',
'session_key' => $session_key,
);
$query = buildQuery($param, $secret);
$result = postRequest($url, $query);
$result = json_decode($result);
print_r($result);
function buildQuery($param, $secret) {
$param['call_id'] = microtime(true);
$param['v'] = '1.0';
ksort($param);
$request_str = '';
foreach ($param as $key => $value) {
$request_str .= $key . '=' . $value; //没有分割符
}
$sig = $request_str . $secret;
$sig = md5($sig);
$param['sig'] = $sig;
$query = http_build_query($param);
return $query;
}
function postRequest($url, $post_string) {
$useragent = 'kaixin001.com API PHP5 Client 1.1 (curl) ' . phpversion();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
if (strlen($post_string) >= 3) { curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); }
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
function url_base64_encode($str)
{
$search = array ('+', '/');
$replace = array ('*', '-');
$basestr = base64_encode($str);
return str_replace( $search, $replace, $basestr );
}
?>
但是始终获取不到session key
跪求:如何获取session key( 组件实验室)
这是根据文档写的:<?php
$api_key = '**************************';
$secret = ************************;
$url = 'http://rest.kaixin001.com/api/rest.php';
*
$session_key = $_GET['kx_session_key']; print_r("获取GET参数".$_GET."<br>");
if (empty($session_key)) {
$session_key = $_COOKIE["kx_session_key"];
}else{
setcookie("kx_session_key",$session_key, time()+3600*4);
//setcookie("kx_session_key",$session_key, time()+3600*4);
}$param = array(
'api_key' => $api_key,
'method' => 'users.getInfo',
'uids' => '100099,100100',
'format' => 'json',
'session_key' => $session_key,
);
$query = buildQuery($param, $secret);
$result = postRequest($url, $query);
$result = json_decode($result);
print_r($result);
function buildQuery($param, $secret) {
$param['call_id'] = microtime(true);
$param['v'] = '1.0';
ksort($param);
$request_str = '';
foreach ($param as $key => $value) {
$request_str .= $key . '=' . $value; //没有分割符
}
$sig = $request_str . $secret;
$sig = md5($sig);
$param['sig'] = $sig;
$query = http_build_query($param);
return $query;
}
function postRequest($url, $post_string) {
$useragent = 'kaixin001.com API PHP5 Client 1.1 (curl) ' . phpversion();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
if (strlen($post_string) >= 3) { curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); }
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
function url_base64_encode($str)
{
$search = array ('+', '/');
$replace = array ('*', '-');
$basestr = base64_encode($str);
return str_replace( $search, $replace, $basestr );
}
?>
统一的调用方式所有API均通过HTTP POST发送请求来实现
签名认证机制保证第三方与开心网开放平台之间的通讯安全性
已开放的API:开心网开放平台API是采用REST基础的接口规范。所有的开心网开放平台API都是通过HTTP POST向http://rest.kaixin001.com/api/rest.php发送请求来实现的。几乎所有的计算机语言都可以通过HTTP协议同REST服务器通信。用户信息调用接口身份信息调用接口:获取已添加组件或连接网站用户的信息,包括UID、姓名、性别、头像以及该用户是否在线;
UID调用接口:获取当前用户(正在使用该组件或连接该网站的用户)的UID;
组件用户判断接口:判断某一用户是否添加了本组件。
好友信息调用接口好友列表调用接口:获取当前登录用户的好友UID列表;
好友身份信息调用接口:获取当前登录用户的好友身份信息,包括UID、姓名、性别、头像以及该用户是否在线。
功能调用接口好友动态调用接口:把组件内的动态发送给全部开心网好友;
系统消息调用接口:把组件内的信息通过系统消息发送给部分开心网好友;
好友邀请调用接口:以系统消息的形式从组件内发出邀请,邀请好友添加该组件。
开心网开放API说明文档.pdf 下载
开心网已经开放的API接口如下图: actions相关的API调用方式跟users和friends的API调用方式不太一样,所以这个组件只实现users和friends的接口。
我们看下单元测试结果。 组件源代码是开源的,所以不在对源码做过多的阐述,接下来主要说一下用法。
跟腾讯社区开放平台SDK的配置类似,先在web.config或者App.config中配置关键值。
1
2
3
4
5
6
7
8
9
10
<configuration>
<configSections>
<section name="kaixin.api" type="System.Configuration.NameValueSectionHandler"/>
</configSections>
<kaixin.api>
<add key="AppId" value="100001726"/>
<add key="SecretKey" value="98581a9347ab4adcf691f1e110dfb92a"/>
<add key="ApiKey" value="970364272447111b2cfd5eef06d40679"/>
</kaixin.api>
</configuration>
SDK中的KaixinClient一样是单例,通过KaixinClient.Instance来调用相关的接口。示例代码如下:
1
2
3
4
5
6
7
8
9
long currentUserId = 0;
try
{
currentUserId = KaixinToolkit.KaixinClient.Instance.GetLoggedInUser();
}
catch (WebException ex)
{
throw ex;
}
开心网的组件是嵌入在iframe中的,它会通过URL传一个sessionKey的值给你,每次接口的调用都需要使用这个sessionKey,而sessionKey的过期时间是4个小时,所以SDK中重载了所有的接口调用方法,方便大家调用接口。 使用未带sessionKey的方法,方法内部会自动调用HttpContext.Current.Request.QueryString去获取sessionKey,如果获取sessionKey失败,那该次的接口调用也是失败的。
如果有问题可以给我留言…^_^…
KaixinToolkit下载地址:http://www.box.net/shared/tb4de5ty9l