开心网[组件实验室] 中session key怎么获取

青衣醉蜀 2010-12-15 10:39:38
文档上说:“在申请组件时填写的组件首页里,用 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 );
}
?>
...全文
613 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
shevchenko681 2011-01-27
  • 打赏
  • 举报
回复
当有用户成功登陆之后,开心网会在url中返回一个名称为kx_session_key的参数,同时在你的域名下生成名为kx_session_key的cookies.
skyaspnet 2011-01-27
  • 打赏
  • 举报
回复
参考 http://blog.moozi.net/archives/kaixin001-open-api-sdk.html:

开心网(kaixin001.com)开放API的C#版SDK

之前开源了腾讯社区开放平台的SDK,现在继续开放开心网的C#版本SDK。

开放API是开心网为第三方开发者提供的一组功能强大的外部接口,它支持Java、PHP、.NET等多种编程语言。借助开放API,第三方开发者可以在开心网平台上方便的开发组件或实现连接功能。它有如下特点:

支持多种编程语言

支持Java、PHP、.NET、Rudy、Python和Perl等多种编程语言
统一的调用方式

所有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
青衣醉蜀 2010-12-16
  • 打赏
  • 举报
回复
不是你 说的那样!
不喝水的鱼 2010-12-15
  • 打赏
  • 举报
回复
你的申请的html页面的表单写下吧!或者把提交时,地址栏的内容写下!
青衣醉蜀 2010-12-15
  • 打赏
  • 举报
回复
跪求。。。等待中。。。
不喝水的鱼 2010-12-15
  • 打赏
  • 举报
回复
就是你有form表单的页面。你不是get提交的吗?
青衣醉蜀 2010-12-15
  • 打赏
  • 举报
回复
兄弟 能说明白点吗

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧