文档上说:“在申请组件时填写的组件首页里,用 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 ); 

?>

解决方案 »

  1.   

    你的申请的html页面的表单写下吧!或者把提交时,地址栏的内容写下!
      

  2.   

    就是你有form表单的页面。你不是get提交的吗?
      

  3.   

    当有用户成功登陆之后,开心网会在url中返回一个名称为kx_session_key的参数,同时在你的域名下生成名为kx_session_key的cookies.
      

  4.   

    参考 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