杭州神话信息技术有限公司
标题:
QQ php简略版oauth requst_token 代码 获取第一步oauth_token
[打印本页]
作者:
wogoule.com
时间:
2011-4-27 13:59:12
标题:
QQ php简略版oauth requst_token 代码 获取第一步oauth_token
<?php
include_once( 'weibooauth.php' );//该代码的引用请下载sina的php SDK源代码 里面有附带 地址是http://open.t.sina.com.cn/wiki/index.php/SDK 我用了其中一个OAuthUtil::parse_parameters静态方法,主要作用是用来解析从服务端返回的字串 (requst_token),将字串变成数组
//参数排列
$key='你申请的key';
$secret='你申请的secret';
$base_string;
$callback_url='http://www.monoob.com/qq/callback.php';
$authorize_url='https://open.t.qq.com/cgi-bin/authorize';
$request_url='https://open.t.qq.com/cgi-bin/request_token';
$request_url_http;
$oauth_callback='http://www.monoob.com/qq/qq.php';
$oauth_consumer_key;
$oauth_nonce;
$oauth_signature;
$oauth_signature_method='HMAC-SHA1';
$oauth_timestamp;
$oauth_version='1.0';
//方法
function generate_nonce(){
$mt = microtime();
$rand = mt_rand();
return md5($mt . $rand);
}
$oauth_nonce = generate_nonce();
function generate_timestamp(){
return time();
}
$oauth_timestamp = generate_timestamp();
function generate_base_string(){
global $request_url;
global $oauth_callback;
global $key;
global $oauth_nonce;
global $oauth_signature_method;
global $oauth_timestamp;
global $oauth_version;
$str .= 'GET&';
$str .= urlencode($request_url);
$str .= '&';
$str1 .= 'oauth_callback';
$str1 .= '%3D';
$str1 .= urlencode(urlencode($oauth_callback));//特别注意 我在这里头大了两天 这里需要对url处理两次
$str1 .= '%26';
$str1 .= 'oauth_consumer_key';
$str1 .= '%3D';
$str1 .= urlencode($key);
$str1 .= '%26';
$str1 .= 'oauth_nonce';
$str1 .= '%3D';
$str1 .= urlencode($oauth_nonce);
$str1 .= '%26';
$str1 .= 'oauth_signature_method';
$str1 .= '%3D';
$str1 .= urlencode($oauth_signature_method);
$str1 .= '%26';
$str1 .= 'oauth_timestamp';
$str1 .= '%3D';
$str1 .= urlencode($oauth_timestamp);
$str1 .= '%26';
$str1 .= 'oauth_version';
$str1 .= '%3D';
$str1 .= urlencode($oauth_version);
$str .= $str1;
return $str;
}
$base_string = generate_base_string();
//print_r($base_string);
$secret1=$secret.'&';
$oauth_signature = base64_encode(hash_hmac('sha1', $base_string, $secret1, true));
//print_r($oauth_signature);
$request_url_http .= $request_url;
$request_url_http .= '?';
$request_url_http .= 'oauth_callback';
$request_url_http .= '=';
$request_url_http .= urlencode($oauth_callback);
$request_url_http .= '&';
$request_url_http .= 'oauth_consumer_key';
$request_url_http .= '=';
$request_url_http .= $key;
$request_url_http .= '&';
$request_url_http .= 'oauth_nonce';
$request_url_http .= '=';
$request_url_http .= $oauth_nonce;
$request_url_http .= '&';
$request_url_http .= 'oauth_signature';
$request_url_http .= '=';
$request_url_http .= urlencode($oauth_signature);
$request_url_http .= '&';
$request_url_http .= 'oauth_signature_method';
$request_url_http .= '=';
$request_url_http .= $oauth_signature_method;
$request_url_http .= '&';
$request_url_http .= 'oauth_timestamp';
$request_url_http .= '=';
$request_url_http .= $oauth_timestamp;
$request_url_http .= '&';
$request_url_http .= 'oauth_version';
$request_url_http .= '=';
$request_url_http .= $oauth_version;
//print_r($request_url_http);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $request_url_http);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$output = curl_exec($ch);
curl_close($ch);
$token = OAuthUtil::parse_parameters( $output); //请求的第一步已然完成,这么简略的代码,没有什么复杂的类,如果你还看不懂,那我也没办法了,这个是我自己尝试写出来的,对php还处于入门阶段
作者:
agag
时间:
2011-4-27 15:22:32
学习一下。谢谢 分享 。
作者:
cnexpo001
时间:
2011-4-27 15:56:36
谢谢 分享 。
作者:
mapleaf
时间:
2011-4-28 16:26:32
不错哦
有一些人碰到这问题了咧。
作者:
字典啦
时间:
2011-4-29 11:54:04
帮你定了呀 哈哈
作者:
chibang
时间:
2011-4-29 11:55:24
我不懂PHp。
欢迎光临 杭州神话信息技术有限公司 (http://cenwor.com/)
Powered by Discuz! X2