新浪,,淘宝登岸

    添加时间: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(){

    ifempty¥this->config)){
    return false;
    }

    ¥config = ¥this->config;
    ¥login_url = ¥config[login_url];
    ¥_SESSION[state] = ¥state = md5uniqidrand(), 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(){
    ifempty¥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) {
    ifempty¥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){
    ifempty¥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);

    //-------恳求为空
    ifempty¥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();

    /检测错误是否产生/
    ifstrpos¥response, callback) !== false){

    ¥lpos = strpos¥response, ();
    ¥rpos = strrpos¥response, ));
    ¥response = substr¥response¥lpos + 1, ¥rpos - ¥lpos -1);
    ¥msg = json_decode(¥response);

    ifisset¥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]);

    //--------检测错误是否产生
    ifstrpos¥response, callback) !== false){

    ¥lpos = strpos¥response, ();
    ¥rpos = strrpos¥response, ));
    ¥response = substr¥response¥lpos + 1, ¥rpos - ¥lpos -1);
    }

    ¥user = json_decode(¥response);
    ifisset¥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{
    ifisset¥_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(){

    ifempty¥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;
    }
    }

    }


    我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》
    分享到: