Call.class.php 4.9 KB
<?php
require dirname (__FILE__) . '/class/Tencent.class.php';

/**
 * 腾讯微博的调用接口
 * 
 * @name Lib_Partner_Qqweibo_Call
 * @package lib/partner/qqweibo
 * @copyright yoho.inc
 * @version 4.0 (2013-12-19 13:27:25)
 * @author fei.hong <fei.hong@yoho.cn>
 */
class Lib_Partner_Qqweibo_Call extends Lib_Partner_Factory
{
    /**
     * 初始化
     */
    protected function init()
    {
        OAuth::init($this->apiConfig['appId'], $this->apiConfig['appKey']);
    }
    
    /**
     * 获取授权URL
     * 
     * @return string
     */
    public function getAuthorizeUrl()
    {
        return OAuth::getAuthorizeURL($this->apiConfig['appCallbackUrl']);
    }
    
    /**
     * 获取授权的TOKEN
     * 
     * @return array
     */
    public function getAccessToken()
    {
        $token = array();
    
        if (isset($_REQUEST['code']))
        {
            // 获取请求访问Token的URL, 并发起请求
            $accessUrl = OAuth::getAccessToken($_REQUEST['code'], $this->apiConfig['appCallbackUrl']);
            $response = Http::request($accessUrl);
            	
            // 解析HTTP请求响应的访问令牌信息
            parse_str($response, $token);
        }
    
        return $token;
    }
    
    /**
     * 获取当前用户的基本资料
     *
     * @param array $token  授权成功的TOKEN, 默认为NULL
     * @return array
     */
    public function getUserInfo($token)
    {
        $userInfo = array();

        if (is_array($token) && isset($token['openid']))
        {
            $_SESSION['t_access_token'] = $token['access_token'];
        	$_SESSION['t_expire_in'] = $token['expires_in'];
        	$_SESSION['t_openid'] = $token['openid'];
        
        	$response = json_decode(Tencent::api('user/info'), true);
        	
        	if (!isset($response['errcode']) || $response['errcode'] == 0)
        	{
        	    $userInfo = $response['data'];
        	}
        }
    
        return $userInfo;
    }
    
    /**
     * 获取当前用户的偶像(关注)列表
     *
     * @see http://wiki.open.t.qq.com/index.php/API文档/关系链接口/获取我的偶像列表
     * @param string $access_token (访问令牌)
     * @param string $openid (腾讯唯一的对应QQ号)
     * @param array $params (参数列表)
     *    format 是 返回数据的格式(json或xml)
     *    reqnum 是 请求个数(1-30)
     *    startindex 是 起始位置(第一页:填0,继续向下翻页:填上次请求返回的nextstartpos)
     *    mode 是 获取模式,默认为0
     *       mode=0,新粉丝在前,只能拉取1000个 
     *       mode=1,最多可拉取一万粉丝,暂不支持排序
     *    install 否  过滤安装应用好友(可选)
     *       0-不考虑该参数,1-获取已安装应用好友,2-获取未安装应用好友
     *    sex 否 按性别过滤标识,1-男,2-女,0-不进行性别过滤,默认为0,支持排序
     * @return array
     */
    public function getFriends($token, $params)
    {
        $result = array();
        
        if (is_array($token) && isset($token['openid']))
        {
            $_SESSION['t_access_token'] = $token['access_token'];
            $_SESSION['t_openid'] = $token['openid'];
            
            $options = array('format' => 'json', 'reqnum' => '20', 'startindex' => '0', 'mode' => '0', 'install' => '0',);
            $params = array_merge($options, $params);
            $response = json_decode(Tencent::api('friends/idollist', $params), true);
            
            if (!isset($response['errcode']) || $response['errcode'] == 0)
            {
                $result = $response['data'];
            }
        }
        
        return $result;
    }
    
    /**
     * 同步分享
     *
     * @param array $token  授权成功的TOKEN
     * @param string $content  要更新的微博信息。信息内容不超过140个汉字, 为空返回400错误。
     * @param string $image  要发布的图片路径, 支持url。[只支持png/jpg/gif三种格式, 增加格式请修改get_image_mime方法]
     * @param string $link  URL地址, 通过该地址链接回来
     * @return boolean  false:失败, true:成功
     */
    public function syncShare($token, $content, $image, $link)
    {
        $result = false;
    
        if (is_array($token) && isset($token['openid']))
        {
            $_SESSION['t_access_token'] = $token['access_token'];
        	$_SESSION['t_expire_in'] = $token['expires_in'];
        	$_SESSION['t_openid'] = $token['openid'];
            
        	$content .= $link;
        	$param = array('format' => 'json', 'content' => $content, 'pic_url' => $image,);
            $response = json_decode(Tencent::api('t/add_pic_url', $param, 'POST', false), true);
            
            if (!isset($response['errcode']) || $response['errcode'] == 0)
            {
                $result = true;
            }
        }
    
        return $result;
    }
}