新浪,,淘宝登岸   
               添加时间:2013-7-18 点击量: 
 
              可以直接拿去用了
<?php
session_start();
class openlogin{
        
        public ¥_URL = ;
        
        public ¥config    =    array();
        public function __construct(){
            ¥this->openlogin();
        }
        function openlogin(){    
        }
        /获取登岸页面URL/
        public function login_url(){
            
            if(empty(¥this->config)){
                return false; 
            }
            
            ¥config = ¥this->config;
            ¥login_url    =    ¥config[login_url];
            ¥_SESSION[state] = ¥state = md5(uniqid(rand(), TRUE));
            ¥array = array(
                response_type=>code,
                state    =>    ¥state,
                client_id=>¥config[appkey],
                redirect_uri=>urlencode( ¥config[redirect_uri] )
            );
            ¥this->set(¥array);
            ¥url    =  ¥this->combineURL(¥login_url , ¥this->_param);
            if(¥url){
                @header(Location:.¥url);
            }else{
                return false;
            }
        }
        /获取access_token/
        public function get_access_token(){
            if(empty(¥this->config)){
                return false; 
            }
            ¥config = ¥this->config;
            if(! ¥config[code] = ¥_REQUEST[code] ){
                return false;
            }
            ¥url    =    ¥config[authorization_url];
            ¥state    =    ¥_SESSION[state];
            ¥array = array(
                grant_type=>authorization_code,
                client_id    =>    ¥config[appkey],
                client_secret=>¥config[appsecret],
                code=>¥config[code],
                redirect_uri=>urlencode( ¥config[redirect_uri] ),
                state=>¥state
            );
            ¥this->set(¥array);
            return  ¥this->post_contents(¥url);
        }        
    
    
        
        / set ¥this->_param 数组/
        public function set(¥array) {
            if(empty(¥array)){
                return false;
            }
            ¥this->_param = array();
            foreach(¥array  as ¥name=>¥value){
                ¥this->_param[¥name] = ¥value;
            }
        }
        /
          post_contents
          办事器经由过程post恳求获得内容
          @param string ¥url       恳求的url,拼接后的
          @return string           恳求返回的内容
         /
        public function post_contents(¥url){
            if(empty(¥url)){
                return false;
            }
            ¥param    = ¥this->combineURL( , ¥this->_param);
            ¥ch = curl_init();
            // 设置URL和响应的选项
            curl_setopt(¥ch, CURLOPT_URL, ¥url);    
            curl_setopt(¥ch, CURLOPT_FAILONERROR, false);
            curl_setopt(¥ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt (¥ch, CURLOPT_SSL_VERIFYPEER, 0);  
             curl_setopt (¥ch, CURLOPT_SSL_VERIFYHOST, 0); 
            curl_setopt(¥ch, CURLOPT_POST, 1);
            curl_setopt(¥ch, CURLOPT_POSTFIELDS, ¥param);            
            // 抓取URL并把它传递给浏览器
            ¥reponse = curl_exec(¥ch);            
            curl_close(¥ch);
            return ¥reponse;
            
        }
        
        /
          get_contents
          办事器经由过程get恳求获得内容
          @param string ¥url       恳求的url,拼接后的
          @return string           恳求返回的内容
         /
        public function get_contents(¥url){
                ¥ch = curl_init();
                curl_setopt(¥ch, CURLOPT_SSL_VERIFYPEER, FALSE);
                curl_setopt(¥ch, CURLOPT_RETURNTRANSFER, TRUE);
                curl_setopt(¥ch, CURLOPT_URL, ¥url);
                ¥response =  curl_exec(¥ch);
                curl_close(¥ch);
            //-------恳求为空
            if(empty(¥response)){
                return false;
            }
            return ¥response;
        }
        /
              combineURL
              拼接url
              @param string ¥baseURL   基于的url
              @param array  ¥keysArr   参数列表数组
              @return string           返回拼接的url
             /
        public function combineURL(¥baseURL,¥keysArr){
            if( ¥baseURL== ){
                ¥combined    =    ;
            }else{
                ¥combined = ¥baseURL.?;
            }
            ¥valueArr = array();
            foreach(¥keysArr as ¥key => ¥val){
                ¥valueArr[] = ¥key=¥val;
            }
            ¥keyStr = implode(&,¥valueArr);
            ¥combined .= (¥keyStr);
            
            return ¥combined;
        }
        
}
class qq_openlogin extends openlogin{
    private ¥openname    =    qq;
    public ¥config = array(
                appkey=>your appkey,
                appsecret=>your appsecret,
                redirect_uri=>http://test.gzyqj.com/openlogin.php?openname=qq,
                login_url => https://graph.qq.com/oauth2.0/authorize,    
                scope=>get_user_info,add_share,list_album,add_album,upload_pic,add_topic,add_one_blog,add_weibo,check_page_fans,add_t,add_pic_t,del_t,get_repost_list,get_info,get_other_info,get_fanslist,get_idolist,add_idol,del_idol,get_tenpay_addr,
                authorization_url=>https://graph.qq.com/oauth2.0/token
            );
    function __construct()
    {
        ¥this->qq_openlogin();
    }
    
    function qq_openlogin(){
        parent::__construct();
    }
    function get_access_token(){
        ¥response    =    parent::get_access_token();
        
        /检测错误是否产生/
        if(strpos(¥response, callback) !== false){
            ¥lpos = strpos(¥response, ();
            ¥rpos = strrpos(¥response, ));
            ¥response  = substr(¥response, ¥lpos + 1, ¥rpos - ¥lpos -1);
            ¥msg = json_decode(¥response);
            if(isset(¥msg->error)){
                return false;
            }
        }
        ¥params = array();
        parse_str(¥response, ¥params);
        /access_token == ¥params[access_token]/
        
        /获取 openid /
        ¥response    =    ¥this->get_contents(https://graph.qq.com/oauth2.0/me?access_token=.¥params[access_token]);
        //--------检测错误是否产生
        if(strpos(¥response, callback) !== false){
            ¥lpos = strpos(¥response, ();
            ¥rpos = strrpos(¥response, ));
            ¥response = substr(¥response, ¥lpos + 1, ¥rpos - ¥lpos -1);
        }
        ¥user = json_decode(¥response);
        if(isset(¥user->error)){
            return false;
        }
        /
            获取用户信息须要参数:openid(用户的ID,与QQ号码一一对应),access_token(可经由过程应用Authorization_Code获取Access_Token 或来获取access_token有3个月有效期),oauth_consumer_key(用户appid),format(返回格局) 
                
        /
        /数据库保存/
        ¥open_param    =    array(
            openid=>¥user->openid,
            access_token=>¥params[access_token]
        );
        //
        ¥open_param[oauth_consumer_key]    =    ¥this->config[appkey];
        ¥open_param[format]                =    json;
        /拼接url/
        ¥get_user_url = ¥this->combineURL(https://graph.qq.com/user/get_user_info,¥open_param);
        //猎取用户信息
        ¥userinfo    =    ¥this->get_contents(¥get_user_url);        
        ¥userinfo    =    json_decode(¥userinfo);
        return ¥userinfo;        
    }
}
class weibo_openlogin extends openlogin{
    private ¥openname    =    weibo;
    public ¥config = array(
                appkey=>your appkey,
                appsecret=>your appsecret,
                login_url    =>    https://api.weibo.com/oauth2/authorize,
                redirect_uri=>http://test.gzyqj.com/openlogin.php?openname=weibo,
                authorization_url=>https://api.weibo.com/oauth2/access_token
            );
    function __construct()
    {
        ¥this->qq_openlogin();
    }
    
    function qq_openlogin(){
        parent::__construct();
    }
    function get_access_token(){
        ¥response    =    parent::get_access_token();
        ¥userinfo = json_decode(¥response);
        return ¥userinfo;
    }
}
class taobao_openlogin extends openlogin{
    private ¥openname    =    taobao;
    public ¥config = array(
                appkey=>your appkey,
                appsecret=>your appsecret,
                redirect_uri=>http://test.gzyqj.com/openlogin.php?openname=taobao,
                authorization_url=>https://oauth.taobao.com/token,
                login_url=>https://oauth.taobao.com/authorize
            );
    function __construct()
    {
        ¥this->qq_openlogin();
    }
    
    function qq_openlogin(){
        parent::__construct();
    }
    function get_access_token(){
        ¥response    =    parent::get_access_token();
        ¥userinfo = json_decode(¥response);
        return ¥userinfo;
    }
}
if(¥_GET[openname]){
    ¥openname    =    ¥_GET[openname]._openlogin;
    ¥openlogin    = new ¥openname();
    if(!isset(¥_REQUEST[code])){        
        //恳求url
        ¥url = ¥openlogin->login_url();
        if(!¥url){
            echo 0;
            exit();
        }
    }else{
        if(isset(¥_REQUEST[state]) && (¥_SESSION[state]    !=    ¥_REQUEST[state] )){
            echo 1;
            exit();
        }    
    
        ¥rs = ¥openlogin->get_access_token();
        
        print_r( ¥rs );
    }
}
?>
 添加一小我人登岸
class renren_openlogin extends openlogin{
    private ¥openname    =    renren;
    public ¥config = array(
                appid=>your appid,
                appkey=>your appkey,
                appsecret=>your secret key,
                redirect_uri=>http://test.gzyqj.com/openlogin.php?openname=renren,
                authorization_url=>https://graph.renren.com/oauth/token,
                login_url=>https://graph.renren.com/oauth/authorize
            );
    function __construct()
    {
        ¥this->qq_openlogin();
    }
    
    function qq_openlogin(){
        parent::__construct();
    }
    function get_access_token(){
        ¥response    =    parent::get_access_token();
        ¥userinfo = json_decode(¥response);
        return ¥userinfo;
        /
                access_token:获取的Access Token;
                expires_in:Access Token的有效期,以秒为单位;
                refresh_token:用于刷新Access Token 的 Refresh Token,长久有效,不会过期;
                scope:Access Token终极的接见局限,既用户实际授予的权限列表(用户在授权页面时,有可能会作废掉某些恳求的权限)。关于权限的具体信息请参考
        /
    }
    /获取登岸页面URL/
    public function login_url(){
        
        if(empty(¥this->config)){
            return false; 
        }
        
        ¥config = ¥this->config;
        ¥login_url    =    ¥config[login_url];
        ¥array = array(
            response_type=>code,
            client_id=>¥config[appid],
            redirect_uri=>urlencode( ¥config[redirect_uri] )
        );
        ¥this->set(¥array);
        ¥url    =  ¥this->combineURL(¥login_url , ¥this->_param);
        if(¥url){
            @header(Location:.¥url);
        }else{
            return false;
        }
    }
}
我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》
                     
                  
     
  
 
    
    
可以直接拿去用了
<?php
session_start();
class openlogin{
public ¥_URL = ;
public ¥config = array();
public function __construct(){
¥this->openlogin();
}
function openlogin(){
}
/获取登岸页面URL/
public function login_url(){
if(empty(¥this->config)){
return false;
}
¥config = ¥this->config;
¥login_url = ¥config[login_url];
¥_SESSION[state] = ¥state = md5(uniqid(rand(), TRUE));
¥array = array(
response_type=>code,
state => ¥state,
client_id=>¥config[appkey],
redirect_uri=>urlencode( ¥config[redirect_uri] )
);
¥this->set(¥array);
¥url = ¥this->combineURL(¥login_url , ¥this->_param);
if(¥url){
@header(Location:.¥url);
}else{
return false;
}
}
/获取access_token/
public function get_access_token(){
if(empty(¥this->config)){
return false;
}
¥config = ¥this->config;
if(! ¥config[code] = ¥_REQUEST[code] ){
return false;
}
¥url = ¥config[authorization_url];
¥state = ¥_SESSION[state];
¥array = array(
grant_type=>authorization_code,
client_id => ¥config[appkey],
client_secret=>¥config[appsecret],
code=>¥config[code],
redirect_uri=>urlencode( ¥config[redirect_uri] ),
state=>¥state
);
¥this->set(¥array);
return ¥this->post_contents(¥url);
}
/ set ¥this->_param 数组/
public function set(¥array) {
if(empty(¥array)){
return false;
}
¥this->_param = array();
foreach(¥array as ¥name=>¥value){
¥this->_param[¥name] = ¥value;
}
}
/
post_contents
办事器经由过程post恳求获得内容
@param string ¥url 恳求的url,拼接后的
@return string 恳求返回的内容
/
public function post_contents(¥url){
if(empty(¥url)){
return false;
}
¥param = ¥this->combineURL( , ¥this->_param);
¥ch = curl_init();
// 设置URL和响应的选项
curl_setopt(¥ch, CURLOPT_URL, ¥url);
curl_setopt(¥ch, CURLOPT_FAILONERROR, false);
curl_setopt(¥ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt (¥ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt (¥ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt(¥ch, CURLOPT_POST, 1);
curl_setopt(¥ch, CURLOPT_POSTFIELDS, ¥param);
// 抓取URL并把它传递给浏览器
¥reponse = curl_exec(¥ch);
curl_close(¥ch);
return ¥reponse;
}
/
get_contents
办事器经由过程get恳求获得内容
@param string ¥url 恳求的url,拼接后的
@return string 恳求返回的内容
/
public function get_contents(¥url){
¥ch = curl_init();
curl_setopt(¥ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt(¥ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt(¥ch, CURLOPT_URL, ¥url);
¥response = curl_exec(¥ch);
curl_close(¥ch);
//-------恳求为空
if(empty(¥response)){
return false;
}
return ¥response;
}
/
combineURL
拼接url
@param string ¥baseURL 基于的url
@param array ¥keysArr 参数列表数组
@return string 返回拼接的url
/
public function combineURL(¥baseURL,¥keysArr){
if( ¥baseURL== ){
¥combined = ;
}else{
¥combined = ¥baseURL.?;
}
¥valueArr = array();
foreach(¥keysArr as ¥key => ¥val){
¥valueArr[] = ¥key=¥val;
}
¥keyStr = implode(&,¥valueArr);
¥combined .= (¥keyStr);
return ¥combined;
}
}
class qq_openlogin extends openlogin{
private ¥openname = qq;
public ¥config = array(
appkey=>your appkey,
appsecret=>your appsecret,
redirect_uri=>http://test.gzyqj.com/openlogin.php?openname=qq,
login_url => https://graph.qq.com/oauth2.0/authorize,
scope=>get_user_info,add_share,list_album,add_album,upload_pic,add_topic,add_one_blog,add_weibo,check_page_fans,add_t,add_pic_t,del_t,get_repost_list,get_info,get_other_info,get_fanslist,get_idolist,add_idol,del_idol,get_tenpay_addr,
authorization_url=>https://graph.qq.com/oauth2.0/token
);
function __construct()
{
¥this->qq_openlogin();
}
function qq_openlogin(){
parent::__construct();
}
function get_access_token(){
¥response = parent::get_access_token();
/检测错误是否产生/
if(strpos(¥response, callback) !== false){
¥lpos = strpos(¥response, ();
¥rpos = strrpos(¥response, ));
¥response = substr(¥response, ¥lpos + 1, ¥rpos - ¥lpos -1);
¥msg = json_decode(¥response);
if(isset(¥msg->error)){
return false;
}
}
¥params = array();
parse_str(¥response, ¥params);
/access_token == ¥params[access_token]/
/获取 openid /
¥response = ¥this->get_contents(https://graph.qq.com/oauth2.0/me?access_token=.¥params[access_token]);
//--------检测错误是否产生
if(strpos(¥response, callback) !== false){
¥lpos = strpos(¥response, ();
¥rpos = strrpos(¥response, ));
¥response = substr(¥response, ¥lpos + 1, ¥rpos - ¥lpos -1);
}
¥user = json_decode(¥response);
if(isset(¥user->error)){
return false;
}
/
获取用户信息须要参数:openid(用户的ID,与QQ号码一一对应),access_token(可经由过程应用Authorization_Code获取Access_Token 或来获取access_token有3个月有效期),oauth_consumer_key(用户appid),format(返回格局)
/
/数据库保存/
¥open_param = array(
openid=>¥user->openid,
access_token=>¥params[access_token]
);
//
¥open_param[oauth_consumer_key] = ¥this->config[appkey];
¥open_param[format] = json;
/拼接url/
¥get_user_url = ¥this->combineURL(https://graph.qq.com/user/get_user_info,¥open_param);
//猎取用户信息
¥userinfo = ¥this->get_contents(¥get_user_url);
¥userinfo = json_decode(¥userinfo);
return ¥userinfo;
}
}
class weibo_openlogin extends openlogin{
private ¥openname = weibo;
public ¥config = array(
appkey=>your appkey,
appsecret=>your appsecret,
login_url => https://api.weibo.com/oauth2/authorize,
redirect_uri=>http://test.gzyqj.com/openlogin.php?openname=weibo,
authorization_url=>https://api.weibo.com/oauth2/access_token
);
function __construct()
{
¥this->qq_openlogin();
}
function qq_openlogin(){
parent::__construct();
}
function get_access_token(){
¥response = parent::get_access_token();
¥userinfo = json_decode(¥response);
return ¥userinfo;
}
}
class taobao_openlogin extends openlogin{
private ¥openname = taobao;
public ¥config = array(
appkey=>your appkey,
appsecret=>your appsecret,
redirect_uri=>http://test.gzyqj.com/openlogin.php?openname=taobao,
authorization_url=>https://oauth.taobao.com/token,
login_url=>https://oauth.taobao.com/authorize
);
function __construct()
{
¥this->qq_openlogin();
}
function qq_openlogin(){
parent::__construct();
}
function get_access_token(){
¥response = parent::get_access_token();
¥userinfo = json_decode(¥response);
return ¥userinfo;
}
}
if(¥_GET[openname]){
¥openname = ¥_GET[openname]._openlogin;
¥openlogin = new ¥openname();
if(!isset(¥_REQUEST[code])){
//恳求url
¥url = ¥openlogin->login_url();
if(!¥url){
echo 0;
exit();
}
}else{
if(isset(¥_REQUEST[state]) && (¥_SESSION[state] != ¥_REQUEST[state] )){
echo 1;
exit();
}
¥rs = ¥openlogin->get_access_token();
print_r( ¥rs );
}
}
?>
添加一小我人登岸
class renren_openlogin extends openlogin{
private ¥openname = renren;
public ¥config = array(
appid=>your appid,
appkey=>your appkey,
appsecret=>your secret key,
redirect_uri=>http://test.gzyqj.com/openlogin.php?openname=renren,
authorization_url=>https://graph.renren.com/oauth/token,
login_url=>https://graph.renren.com/oauth/authorize
);
function __construct()
{
¥this->qq_openlogin();
}
function qq_openlogin(){
parent::__construct();
}
function get_access_token(){
¥response = parent::get_access_token();
¥userinfo = json_decode(¥response);
return ¥userinfo;
/
access_token:获取的Access Token;
expires_in:Access Token的有效期,以秒为单位;
refresh_token:用于刷新Access Token 的 Refresh Token,长久有效,不会过期;
scope:Access Token终极的接见局限,既用户实际授予的权限列表(用户在授权页面时,有可能会作废掉某些恳求的权限)。关于权限的具体信息请参考
/
}
/获取登岸页面URL/
public function login_url(){
if(empty(¥this->config)){
return false;
}
¥config = ¥this->config;
¥login_url = ¥config[login_url];
¥array = array(
response_type=>code,
client_id=>¥config[appid],
redirect_uri=>urlencode( ¥config[redirect_uri] )
);
¥this->set(¥array);
¥url = ¥this->combineURL(¥login_url , ¥this->_param);
if(¥url){
@header(Location:.¥url);
}else{
return false;
}
}
}
我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》




