コード例 #1
0
/**
 * @brief 请求临时token.请求需经过URL编码,编码时请遵循 RFC 1738
 *  
 * @param $appid
 * @param $appkey
 *
 * @return 返回字符串格式为:oauth_token=xxx&oauth_token_secret=xxx
 */
function get_request_token($appid, $appkey)
{
    //请求临时token的接口地址, 不要更改!!
    $url = "http://openapi.qzone.qq.com/oauth/qzoneoauth_request_token?";
    //生成oauth_signature签名值。签名值生成方法详见(http://wiki.opensns.qq.com/wiki/【QQ登录】签名参数oauth_signature的说明)
    //(1) 构造生成签名值的源串(HTTP请求方式 & urlencode(uri) & urlencode(a=x&b=y&...))
    $sigstr = "GET" . "&" . rawurlencode("http://openapi.qzone.qq.com/oauth/qzoneoauth_request_token") . "&";
    //必要参数
    $params = array();
    $params["oauth_version"] = "1.0";
    $params["oauth_signature_method"] = "HMAC-SHA1";
    $params["oauth_timestamp"] = time();
    $params["oauth_nonce"] = mt_rand();
    $params["oauth_consumer_key"] = $appid;
    //对参数按照字母升序做序列化
    $normalized_str = get_normalized_string($params);
    $sigstr .= rawurlencode($normalized_str);
    //(2)构造密钥
    $key = $appkey . "&";
    //(3)生成oauth_signature签名值。这里需要确保PHP版本支持hash_hmac函数
    $signature = get_signature($sigstr, $key);
    //构造请求url
    $url .= $normalized_str . "&" . "oauth_signature=" . rawurlencode($signature);
    //echo "$sigstr\n";
    //echo "$url\n";
    //echo $url;
    return file_get_contents($url);
}
コード例 #2
0
/**
 * @brief 获取access_token。请求需经过URL编码,编码时请遵循 RFC 1738
 *
 * @param $appid
 * @param $appkey
 * @param $request_token
 * @param $request_token_secret
 * @param $vericode
 *
 * @return 返回字符串格式为:oauth_token=xxx&oauth_token_secret=xxx&openid=xxx&oauth_signature=xxx&oauth_vericode=xxx&timestamp=xxx
 */
function get_access_token($appid, $appkey, $request_token, $request_token_secret, $vericode)
{
    global $global_arg;
    //请求具有Qzone访问权限的access_token的接口地址, 不要更改!!
    $url = "http://openapi.qzone.qq.com/oauth/qzoneoauth_access_token?";
    //生成oauth_signature签名值。签名值生成方法详见(http://wiki.opensns.qq.com/wiki/【QQ登录】签名参数oauth_signature的说明)
    //(1) 构造生成签名值的源串(HTTP请求方式 & urlencode(uri) & urlencode(a=x&b=y&...))
    $sigstr = "GET" . "&" . QQConnect_urlencode("http://openapi.qzone.qq.com/oauth/qzoneoauth_access_token") . "&";
    //必要参数,不要随便更改!!
    $params = array();
    $params["oauth_version"] = "1.0";
    $params["oauth_signature_method"] = "HMAC-SHA1";
    $params["oauth_timestamp"] = time();
    $params["oauth_nonce"] = mt_rand();
    $params["oauth_consumer_key"] = $appid;
    $params["oauth_token"] = $request_token;
    $params["oauth_vericode"] = $vericode;
    //对参数按照字母升序做序列化
    $normalized_str = get_normalized_string($params);
    $sigstr .= QQConnect_urlencode($normalized_str);
    //echo "sigstr = $sigstr";
    //(2)构造密钥
    $key = $appkey . "&" . $request_token_secret;
    //(3)生成oauth_signature签名值。这里需要确保PHP版本支持hash_hmac函数
    $signature = get_signature($sigstr, $key);
    //构造请求url
    $url .= $normalized_str . "&" . "oauth_signature=" . QQConnect_urlencode($signature);
    $global_arg = $url;
    return file_get_contents($url);
}
コード例 #3
0
ファイル: utils.php プロジェクト: rebolomo/user_band
/**
 * @brief 所有post 请求都可以使用这个方法
 *
 * @param $url
 * @param $appid
 * @param $appkey
 * @param $access_token
 * @param $access_token_secret
 * @param $openid
 *
 */
function do_post($url, $appid, $appkey, $access_token, $access_token_secret, $openid)
{
    //构造签名串.源串:方法[GET|POST]&uri&参数按照字母升序排列
    $sigstr = "POST" . "&" . rawurlencode($url) . "&";
    //必要参数,不要随便更改!!
    $params = $_POST;
    $params["oauth_version"] = "1.0";
    $params["oauth_signature_method"] = "HMAC-SHA1";
    $params["oauth_timestamp"] = time();
    $params["oauth_nonce"] = mt_rand();
    $params["oauth_consumer_key"] = $appid;
    $params["oauth_token"] = $access_token;
    $params["openid"] = $openid;
    unset($params["oauth_signature"]);
    //对参数按照字母升序做序列化
    $sigstr .= rawurlencode(get_normalized_string($params));
    //签名,需要确保php版本支持hash_hmac函数
    $key = $appkey . "&" . $access_token_secret;
    $signature = get_signature($sigstr, $key);
    $params["oauth_signature"] = $signature;
    $postdata = get_urlencode_string($params);
    //echo "$sigstr******\n";
    //echo "$postdata\n";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
    curl_setopt($ch, CURLOPT_URL, $url);
    $ret = curl_exec($ch);
    curl_close($ch);
    return $ret;
}
コード例 #4
0
ファイル: qq_login.php プロジェクト: GHubgenius/qbbj
/**
 * @brief get a request token by appid and appkey
 *        rfc1738 urlencode
 * @param $appid
 * @param $appkey
 *
 * @return a string, the format as follow: 
 *      oauth_token=xxx&oauth_token_secret=xxx
 */
function get_request_token($appid, $appkey)
{
    //获取request token接口, 不要随便更改!!
    $url = "http://openapi.qzone.qq.com/oauth/qzoneoauth_request_token?";
    //构造签名串.源串:方法[GET|POST]&uri&参数按照字母升序排列
    $sigstr = "GET" . "&" . rawurlencode("http://openapi.qzone.qq.com/oauth/qzoneoauth_request_token") . "&";
    //必要参数,不要随便更改!!
    $params = array();
    $params["oauth_version"] = "1.0";
    $params["oauth_signature_method"] = "HMAC-SHA1";
    $params["oauth_timestamp"] = time();
    $params["oauth_nonce"] = mt_rand();
    $params["oauth_consumer_key"] = $appid;
    //对参数按照字母升序做序列化
    $normalized_str = get_normalized_string($params);
    $sigstr .= rawurlencode($normalized_str);
    //签名,需要确保php版本支持hash_hmac函数
    $key = $appkey . "&";
    $signature = get_signature($sigstr, $key);
    //构造请求url
    $url .= $normalized_str . "&" . "oauth_signature=" . rawurlencode($signature);
    //echo "$sigstr\n";
    //echo "$url\n";
    return file_get_contents($url);
}