PHP QQ 登录接口应用
来源:互联网 发布:腾讯软件大全 编辑:程序博客网 时间:2024/05/01 09:13
QQ 登录申请网址:
http://connect.qq.com/manage/info?id=1
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nightwizard.blog.51cto.com/2181643/607938
//---------------------------<?php class qzone{var $appid = "***********";//换成您的var $appkey = "**********";//换成您的//除去数组中的空值和签名模式function filter($parameter) {$para = array();while (list ($key, $val) = each ($parameter)) {if($key == "sign" || $key == "sign_type" || $val == ""){continue;}else{$para[$key] = $parameter[$key];}}return $para;}/*** 生成请求代码* @param String $callback 回调地址*/function request($callback = ''){//必要参数,不要随便更改!!$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"] = $this->appid;$sign = $this->sign($params, "GET"."&".rawurlencode("http://openapi.qzone.qq.com/oauth/qzoneoauth_request_token")."&", $this->appkey . '&');$url = "http://openapi.qzone.qq.com/oauth/qzoneoauth_request_token?".$this->format($params)."&"."oauth_signature=".rawurlencode($sign);$request = file_get_contents($url);//print_r($url);print_r($request);die;$result = array();parse_str($request, $result);if (!isset($result['oauth_token'])){//错误返回输出die();}$_SESSION["qq_token"] = $result["oauth_token"];$_SESSION["qq_secret"] = $result["oauth_token_secret"];//302跳转到授权页面$redirect .= "http://openapi.qzone.qq.com/oauth/qzoneoauth_authorize?oauth_consumer_key=".$this->appid."&oauth_token=".$result["oauth_token"]."&oauth_callback=".rawurlencode($callback);//die($redirect);header("Location:$redirect");}/*** 响应操作*/function respond(){$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"] = $this->appid;$params["oauth_token"] = $_SESSION["qq_token"];$params["oauth_vericode"] = $_REQUEST["oauth_vericode"];//echo "sig:$sig/n";//echo "str:$str/n";$sign = $this->sign($params, "GET"."&".rawurlencode("http://openapi.qzone.qq.com/oauth/qzoneoauth_access_token")."&", $this->appkey. '&' . $_SESSION["qq_secret"]);$url = "http://openapi.qzone.qq.com/oauth/qzoneoauth_access_token?".$this->format($params)."&"."oauth_signature=".rawurlencode($sign);$request = file_get_contents($url);$result = array();parse_str($request, $result);if (isset($result["error_code"])){return false;}//验证签名$key = $this->appkey;$str = $_REQUEST["openid"] . trim($_REQUEST["timestamp"]);if ($_REQUEST["oauth_signature"] != $this->sign(array(), $str, $key)){return false;}$_SESSION["qq_token"] = $result["oauth_token"];$_SESSION["qq_secret"] = $result["oauth_token_secret"]; $_SESSION["qq_openid"] = $result["openid"];return true;}//链接字符串function format($parameter){$parameter = $this->filter($parameter);ksort($parameter);reset($parameter);$params = '';foreach ($parameter AS $key => $val){$params .= "$key=$val&";}$params = substr($params, 0, -1);return $params;}function sign($parameter, $source, $key){$params = $source . rawurlencode($this->format($parameter));//$key = $this->appkey . '&' . $secret;$sign = "";if (function_exists('hash_hmac')){$sign = base64_encode(hash_hmac("sha1", $params, $key, true));}else{$blocksize = 64;$hashfunc = 'sha1';if (strlen($key) > $blocksize){$key = pack('H*', $hashfunc($key));}$key = str_pad($key,$blocksize,chr(0x00));$ipad = str_repeat(chr(0x36),$blocksize);$opad = str_repeat(chr(0x5c),$blocksize);$hmac = pack('H*',$hashfunc(($key^$opad).pack('H*',$hashfunc(($key^$ipad).$params))));$sign = base64_encode($hmac);}return $sign;}/*** 远程获取数据* $url 指定URL完整路径地址* @param $input_charset 编码格式。默认值:空值* @param $time_out 超时时间。默认值:60* return 远程输出的数据*/function getHttpRequest($url, $access_token, $access_token_secret, $openid){$sigstr = "GET"."&".rawurlencode("$url")."&";//必要参数, 不要随便更改!!$params = $_GET;$params["oauth_version"] = "1.0";$params["oauth_signature_method"] = "HMAC-SHA1";$params["oauth_timestamp"] = time();$params["oauth_nonce"] = mt_rand();$params["oauth_consumer_key"] = $this->appid;$params["oauth_token"] = $access_token;$params["openid"] = $openid;unset($params["oauth_signature"]);$sign = $this->sign($params, "GET"."&".rawurlencode("$url")."&", $this->appkey . '&' . $_SESSION["qq_secret"]);$url = $url."?".$this->format($params)."&"."oauth_signature=".rawurlencode($sign);$result = file_get_contents($url);return json_decode(str_replace(array("/n", "/t"), '', $result), true);}}//---------------------------?>使用方法请求代码<?php //---------------------------//请求$qzone = new qzone;$qzone->request('域名/qzone/login');//---------------------------?>接受代码<?php //---------------------------//接收if ($qzone->respond()){//如果成功,获取用户信息$result = $qq->getHttpRequest("http://openapi.qzone.qq.com/user/get_user_info", $_SESSION["qq_token"], $_SESSION["qq_secret"], $_SESSION["qq_openid"]);//下面是数据库操作业务}//---------------------------?>
- PHP QQ 登录接口应用
- PHP QQ 登录接口应用
- PHP QQ 登录接口应用
- QQ登录接口
- PHP模拟QQ登录
- CI框架 QQ接口(第三方登录接口PHP版)
- QQ开放平台QQ登录PHP代码
- QQ登录PHP OAuth示例
- QQ登录PHP OAuth示例
- qq 登录api php类
- PHP实现QQ快速登录
- PHP实现QQ快速登录
- 第三方QQ登录接口的申请及使用流程之web+php
- Android应用实现QQ登录
- 新浪、QQ OAuth2.0接口应用及简单DZ!NT登录整合
- 新浪、QQ OAuth2.0接口应用及简单DZ!NT登录整合
- PHP第三方登录—QQ登录
- QQ终于开发登录接口api
- TreeMap实现统计字符出现次数
- Collections类中排序方法
- linux内核中的文件描述符(五)--fd的分配--locate_fd
- NAND FLASH ECC校验原理与实现
- opencv linux 打开摄像头视频
- PHP QQ 登录接口应用
- 慎用进程间条件变量pthread_cond_t
- FTP上传常见错误详解
- ANT学习1
- 启动mac 的apach
- Codeforces Round #159 (Div. 2) D sum
- WIN7 VMware Ubuntu虚拟机连接secureCRT及UltraEdit ftp传输文件
- PowerDesigner(PowerDesigner15.1.0.2850)下载、安装以及破解
- C#使用BinaryReader类读取二进制文件