qq 登录api php类
来源:未知 责任编辑:责任编辑 发表时间:2015-09-16 20:04 点击:次
<?php
/**
* QQ操作类
* $Author: shunzi $
* $Id: cls_qq.php 17171 2011-05-30 06:14:00Z shunzi $
*/
class qq_api
{
var $appid = ”;
var $appkey = ”;
var $callback = ”;
var $login_type = 1;
/**
* 构造函数
*
* @access public
* @param string $ver 版本号
*
* @return void
*/
function qq_api($appid, $appkey,$callback,$login_type)
{
$this->appid = $appid;
$this->appkey = $appkey;
$this->callback = $callback;
$this->login_type = $login_type;
}
/**
* @brief 跳转到QQ登录页面.请求需经过URL编码,编码时请遵循 RFC 1738
*
* @param $appid
* @param $appkey
* @param $callback
*
* @return 返回字符串格式为:oauth_token=xxx&openid=xxx&oauth_signature=xxx×tamp=xxx&oauth_vericode=xxx
*/
function redirect_to_login()
{
//跳转到QQ登录页的接口地址, 不要更改!!
$redirect = “http://openapi.qzone.qq.com/oauth/qzoneoauth_authorize?oauth_consumer_key=”.$this->appid.”&”;
//调用get_request_token接口获取未授权的临时token
$result = array();
$request_token = $this->get_request_token();
parse_str($request_token, $result);
//request token, request token secret 需要保存起来
//在demo演示中,直接保存在全局变量中.
//为避免网站存在多个子域名或同一个主域名不同服务器造成的session无法共享问题
//请开发者按照本SDK中comm/session.php中的注释对session.php进行必要的修改,以解决上述2个问题,
$_SESSION["token"] = $result["oauth_token"];
$_SESSION["secret"] = $result["oauth_token_secret"];
//print_r($_SESSION);
if ($result["oauth_token"] == “”)
{
//示例代码中没有对错误情况进行处理。真实情况下网站需要自己处理错误情况
exit;
}
////构造请求URL
$redirect .= “oauth_token=”.$result["oauth_token"].”&oauth_callback=”.rawurlencode($this->callback);
header(“Location:$redirect”);
}
/**
* @brief 请求临时token.请求需经过URL编码,编码时请遵循 RFC 1738
*
* @param $appid
* @param $appkey
*
* @return 返回字符串格式为:oauth_token=xxx&oauth_token_secret=xxx
*/
function get_request_token()
{
//请求临时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&…))
/**
* QQ操作类
* $Author: shunzi $
* $Id: cls_qq.php 17171 2011-05-30 06:14:00Z shunzi $
*/
class qq_api
{
var $appid = ”;
var $appkey = ”;
var $callback = ”;
var $login_type = 1;
/**
* 构造函数
*
* @access public
* @param string $ver 版本号
*
* @return void
*/
function qq_api($appid, $appkey,$callback,$login_type)
{
$this->appid = $appid;
$this->appkey = $appkey;
$this->callback = $callback;
$this->login_type = $login_type;
}
/**
* @brief 跳转到QQ登录页面.请求需经过URL编码,编码时请遵循 RFC 1738
*
* @param $appid
* @param $appkey
* @param $callback
*
* @return 返回字符串格式为:oauth_token=xxx&openid=xxx&oauth_signature=xxx×tamp=xxx&oauth_vericode=xxx
*/
function redirect_to_login()
{
//跳转到QQ登录页的接口地址, 不要更改!!
$redirect = “http://openapi.qzone.qq.com/oauth/qzoneoauth_authorize?oauth_consumer_key=”.$this->appid.”&”;
//调用get_request_token接口获取未授权的临时token
$result = array();
$request_token = $this->get_request_token();
parse_str($request_token, $result);
//request token, request token secret 需要保存起来
//在demo演示中,直接保存在全局变量中.
//为避免网站存在多个子域名或同一个主域名不同服务器造成的session无法共享问题
//请开发者按照本SDK中comm/session.php中的注释对session.php进行必要的修改,以解决上述2个问题,
$_SESSION["token"] = $result["oauth_token"];
$_SESSION["secret"] = $result["oauth_token_secret"];
//print_r($_SESSION);
if ($result["oauth_token"] == “”)
{
//示例代码中没有对错误情况进行处理。真实情况下网站需要自己处理错误情况
exit;
}
////构造请求URL
$redirect .= “oauth_token=”.$result["oauth_token"].”&oauth_callback=”.rawurlencode($this->callback);
header(“Location:$redirect”);
}
/**
* @brief 请求临时token.请求需经过URL编码,编码时请遵循 RFC 1738
*
* @param $appid
* @param $appkey
*
* @return 返回字符串格式为:oauth_token=xxx&oauth_token_secret=xxx
*/
function get_request_token()
{
//请求临时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&…))
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>