0

0

新浪,腾讯,淘宝登陆_PHP教程

php中文网

php中文网

发布时间:2016-07-20 11:13:06

|

1070人浏览过

|

来源于php中文网

原创

可以直接拿去用了

<?<span php
</span><span session_start</span><span ();
</span><span class</span><span  openlogin{
        
        </span><span public</span> <span $_URL</span> = ""<span ;
        
        </span><span public</span> <span $config</span>    =    <span array</span><span ();

        </span><span public</span> <span function</span><span  __construct(){
            </span><span $this</span>-><span openlogin();
        }
        </span><span function</span><span  openlogin(){    

        }

        </span><span /*</span><span 获取登陆页面URL</span><span */</span>
        <span public</span> <span function</span><span  login_url(){
            
            </span><span if</span>(<span empty</span>(<span $this</span>-><span config)){
                </span><span return</span> <span false</span><span ; 
            }
            
            </span><span $config</span> = <span $this</span>-><span config;
            </span><span $login_url</span>    =    <span $config</span>['login_url'<span ];
            </span><span $_SESSION</span>['state'] = <span $state</span> = <span md5</span>(<span uniqid</span>(<span rand</span>(), <span TRUE</span><span ));
            </span><span $array</span> = <span array</span><span (
                </span>"response_type"=>"code",
                "state"    =>    <span $state</span>,
                "client_id"=><span $config</span>['appkey'],
                "redirect_uri"=><span urlencode</span>( <span $config</span>['redirect_uri'<span ] )
            );

            </span><span $this</span>->set(<span $array</span><span );

            </span><span $url</span>    =  <span $this</span>->combineURL(<span $login_url</span> , <span $this</span>-><span _param);

            </span><span if</span>(<span $url</span><span ){
                @</span><span header</span>("Location:".<span $url</span><span );
            }</span><span else</span><span {
                </span><span return</span> <span false</span><span ;
            }
        }

        </span><span /*</span><span 获取access_token</span><span */</span>
        <span public</span> <span function</span><span  get_access_token(){
            </span><span if</span>(<span empty</span>(<span $this</span>-><span config)){
                </span><span return</span> <span false</span><span ; 
            }

            </span><span $config</span> = <span $this</span>-><span config;

            </span><span if</span>(! <span $config</span>['code'] = <span $_REQUEST</span>['code'<span ] ){
                </span><span return</span> <span false</span><span ;
            }

            </span><span $url</span>    =    <span $config</span>['authorization_url'<span ];
            </span><span $state</span>    =    <span $_SESSION</span>['state'<span ];
            </span><span $array</span> = <span array</span><span (
                </span>"grant_type"=>"authorization_code",
                "client_id"    =>    <span $config</span>['appkey'],
                "client_secret"=><span $config</span>['appsecret'],
                "code"=><span $config</span>['code'],
                "redirect_uri"=><span urlencode</span>( <span $config</span>['redirect_uri'] ),
                "state"=><span $state</span><span 
            );
            </span><span $this</span>->set(<span $array</span><span );
            </span><span return</span>  <span $this</span>->post_contents(<span $url</span><span );
        }        
    
    
        
        </span><span /*</span><span  set $this->_param 数组</span><span */</span>
        <span public</span> <span function</span> set(<span $array</span><span ) {
            </span><span if</span>(<span empty</span>(<span $array</span><span )){
                </span><span return</span> <span false</span><span ;
            }
            </span><span $this</span>->_param = <span array</span><span ();
            </span><span foreach</span>(<span $array</span>  <span as</span> <span $name</span>=><span $value</span><span ){
                </span><span $this</span>->_param[<span $name</span>] = <span $value</span><span ;
            }
        }
        </span><span /*</span><span *
         * post_contents
         * 服务器通过post请求获得内容
         * @param string $url       请求的url,拼接后的
         * @return string           请求返回的内容
         </span><span */</span>
        <span public</span> <span function</span> post_contents(<span $url</span><span ){
            </span><span if</span>(<span empty</span>(<span $url</span><span )){
                </span><span return</span> <span false</span><span ;
            }
            </span><span $param</span>    = <span $this</span>->combineURL("" , <span $this</span>-><span _param);
            </span><span $ch</span> =<span  curl_init();
            </span><span //</span><span  设置URL和相应的选项</span>
            curl_setopt(<span $ch</span>, CURLOPT_URL, <span $url</span><span );    
            curl_setopt(</span><span $ch</span>, CURLOPT_FAILONERROR, <span false</span><span );
            curl_setopt(</span><span $ch</span>, CURLOPT_RETURNTRANSFER, <span true</span><span );
            curl_setopt (</span><span $ch</span>, CURLOPT_SSL_VERIFYPEER, 0<span );  
             curl_setopt (</span><span $ch</span>, CURLOPT_SSL_VERIFYHOST, 0<span ); 
            curl_setopt(</span><span $ch</span>, CURLOPT_POST, 1<span );
            curl_setopt(</span><span $ch</span>, CURLOPT_POSTFIELDS, <span $param</span><span );            
            </span><span //</span><span  抓取URL并把它传递给浏览器</span>
            <span $reponse</span> = curl_exec(<span $ch</span><span );            
            curl_close(</span><span $ch</span><span );
            </span><span return</span> <span $reponse</span><span ;
            
        }
        
        </span><span /*</span><span *
         * get_contents
         * 服务器通过get请求获得内容
         * @param string $url       请求的url,拼接后的
         * @return string           请求返回的内容
         </span><span */</span>
        <span public</span> <span function</span> get_contents(<span $url</span><span ){
                </span><span $ch</span> =<span  curl_init();
                curl_setopt(</span><span $ch</span>, CURLOPT_SSL_VERIFYPEER, <span FALSE</span><span );
                curl_setopt(</span><span $ch</span>, CURLOPT_RETURNTRANSFER, <span TRUE</span><span );
                curl_setopt(</span><span $ch</span>, CURLOPT_URL, <span $url</span><span );
                </span><span $response</span> =  curl_exec(<span $ch</span><span );
                curl_close(</span><span $ch</span><span );

            </span><span //</span><span -------请求为空</span>
            <span if</span>(<span empty</span>(<span $response</span><span )){
                </span><span return</span> <span false</span><span ;
            }

            </span><span return</span> <span $response</span><span ;
        }

        </span><span /*</span><span *
             * combineURL
             * 拼接url
             * @param string $baseURL   基于的url
             * @param array  $keysArr   参数列表数组
             * @return string           返回拼接的url
             </span><span */</span>
        <span public</span> <span function</span> combineURL(<span $baseURL</span>,<span $keysArr</span><span ){
            </span><span if</span>( <span $baseURL</span>==""<span  ){
                </span><span $combined</span>    =    ""<span ;
            }</span><span else</span><span {
                </span><span $combined</span> = <span $baseURL</span>."?"<span ;
            }
            </span><span $valueArr</span> = <span array</span><span ();

            </span><span foreach</span>(<span $keysArr</span> <span as</span> <span $key</span> => <span $val</span><span ){
                </span><span $valueArr</span>[] = "<span $key</span>=<span $val</span>"<span ;
            }

            </span><span $keyStr</span> = <span implode</span>("&",<span $valueArr</span><span );
            </span><span $combined</span> .= (<span $keyStr</span><span );
            
            </span><span return</span> <span $combined</span><span ;
        }
        
}


</span><span class</span> qq_openlogin <span extends</span><span  openlogin{
    </span><span private</span> <span $openname</span>    =    "qq"<span ;
    </span><span public</span> <span $config</span> = <span array</span><span (
                </span>"appkey"=>"your appkey",
                "appsecret"=>"your appsecret",
                "redirect_uri"=>"XXXXX",
                "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"<span 
            );

    </span><span function</span><span  __construct()
    {
        </span><span $this</span>-><span qq_openlogin();
    }
    
    </span><span function</span><span  qq_openlogin(){
        parent</span>::<span __construct();
    }


    </span><span function</span><span  get_access_token(){
        </span><span $response</span>    =    parent::<span get_access_token();
        
        </span><span /*</span><span 检测错误是否发生</span><span */</span>
        <span if</span>(<span strpos</span>(<span $response</span>, "callback") !== <span false</span><span ){

            </span><span $lpos</span> = <span strpos</span>(<span $response</span>, "("<span );
            </span><span $rpos</span> = <span strrpos</span>(<span $response</span>, ")"<span );
            </span><span $response</span>  = <span substr</span>(<span $response</span>, <span $lpos</span> + 1, <span $rpos</span> - <span $lpos</span> -1<span );
            </span><span $msg</span> = json_decode(<span $response</span><span );

            </span><span if</span>(<span isset</span>(<span $msg</span>-><span error)){
                </span><span return</span> <span false</span><span ;
            }
        }

        </span><span $params</span> = <span array</span><span ();
        </span><span parse_str</span>(<span $response</span>, <span $params</span><span );
        </span><span /*</span><span access_token == $params[access_token]</span><span */</span>
        
        <span /*</span><span 获取 openid </span><span */</span>
        <span $response</span>    =    <span $this</span>->get_contents("https://graph.qq.com/oauth2.0/me?access_token=".<span $params</span>['access_token'<span ]);

        </span><span //</span><span --------检测错误是否发生</span>
        <span if</span>(<span strpos</span>(<span $response</span>, "callback") !== <span false</span><span ){

            </span><span $lpos</span> = <span strpos</span>(<span $response</span>, "("<span );
            </span><span $rpos</span> = <span strrpos</span>(<span $response</span>, ")"<span );
            </span><span $response</span> = <span substr</span>(<span $response</span>, <span $lpos</span> + 1, <span $rpos</span> - <span $lpos</span> -1<span );
        }

        </span><span $user</span> = json_decode(<span $response</span><span );
        </span><span if</span>(<span isset</span>(<span $user</span>-><span error)){
            </span><span return</span> <span false</span><span ;
        }

        </span><span /*</span><span 
            获取用户信息需要参数:openid(用户的ID,与QQ号码一一对应),access_token(可通过使用Authorization_Code获取Access_Token 或来获取access_token有3个月有效期),oauth_consumer_key(用户appid),format(返回格式) 
                
        </span><span */</span>
        <span /*</span><span 数据库保存</span><span */</span>
        <span $open_param</span>    =    <span array</span><span (
            </span>"openid"=><span $user</span>->openid,
            "access_token"=><span $params</span>['access_token'<span ]
        );
        </span><span //
</span>        <span $open_param</span>['oauth_consumer_key']    =    <span $this</span>->config['appkey'<span ];
        </span><span $open_param</span>['format']                =    "json"<span ;
        </span><span /*</span><span 拼接url</span><span */</span>
        <span $get_user_url</span> = <span $this</span>->combineURL("https://graph.qq.com/user/get_user_info",<span $open_param</span><span );
        </span><span //</span><span 猎取用户信息</span>
        <span $userinfo</span>    =    <span $this</span>->get_contents(<span $get_user_url</span><span );        

        </span><span $userinfo</span>    =    json_decode(<span $userinfo</span><span );

        </span><span return</span> <span $userinfo</span><span ;        
    }
}

</span><span class</span> weibo_openlogin <span extends</span><span  openlogin{
    </span><span private</span> <span $openname</span>    =    "weibo"<span ;
    </span><span public</span> <span $config</span> = <span array</span><span (
                </span>"appkey"=>"your appkey",
                "appsecret"=>"your appsecret",
                "login_url"    =>    "https://api.weibo.com/oauth2/authorize",
                "redirect_uri"=>"XXXXXXX",
                "authorization_url"=>"https://api.weibo.com/oauth2/access_token"<span 
            );

    </span><span function</span><span  __construct()
    {
        </span><span $this</span>-><span qq_openlogin();
    }
    
    </span><span function</span><span  qq_openlogin(){
        parent</span>::<span __construct();
    }

    </span><span function</span><span  get_access_token(){
        </span><span $response</span>    =    parent::<span get_access_token();

        </span><span $userinfo</span> = json_decode(<span $response</span><span );

        </span><span return</span> <span $userinfo</span><span ;
    }

}

</span><span class</span> taobao_openlogin <span extends</span><span  openlogin{
    </span><span private</span> <span $openname</span>    =    "taobao"<span ;
    </span><span public</span> <span $config</span> = <span array</span><span (
                </span>"appkey"=>"your appkey",
                "appsecret"=>"your appsecret",
                "redirect_uri"=>"XXXXX",
                "authorization_url"=>"https://oauth.taobao.com/token",
                "login_url"=>"https://oauth.taobao.com/authorize"<span 
            );

    </span><span function</span><span  __construct()
    {
        </span><span $this</span>-><span qq_openlogin();
    }
    
    </span><span function</span><span  qq_openlogin(){
        parent</span>::<span __construct();
    }

    </span><span function</span><span  get_access_token(){
        </span><span $response</span>    =    parent::<span get_access_token();

        </span><span $userinfo</span> = json_decode(<span $response</span><span );

        </span><span return</span> <span $userinfo</span><span ;
    }

}




</span><span if</span>(<span $_GET</span>['openname'<span ]){
    </span><span $openname</span>    =    <span $_GET</span>['openname']."_openlogin"<span ;
    </span><span $openlogin</span>    = <span new</span> <span $openname</span><span ();
    </span><span if</span>(!<span isset</span>(<span $_REQUEST</span>['code'<span ])){        
        </span><span //</span><span 请求url</span>
        <span $url</span> = <span $openlogin</span>-><span login_url();
        </span><span if</span>(!<span $url</span><span ){
            </span><span echo</span> "0"<span ;
            </span><span exit</span><span ();
        }
    }</span><span else</span><span {
        </span><span if</span>(<span isset</span>(<span $_REQUEST</span>["state"]) && (<span $_SESSION</span>['state']    !=    <span $_REQUEST</span>["state"<span ] )){
            </span><span echo</span> "1"<span ;
            </span><span exit</span><span ();
        }    
    
        </span><span $rs</span> = <span $openlogin</span>-><span get_access_token();
        
        </span><span print_r</span>( <span $rs</span><span  );

    }

}



</span>?>

 添加一个人人登陆

无限画
无限画

千库网旗下AI绘画创作平台

下载
<span class</span> renren_openlogin <span extends</span><span  openlogin{
    </span><span private</span> <span $openname</span>    =    "renren"<span ;
    </span><span public</span> <span $config</span> = <span array</span><span (
                </span>"appid"=>"your appid",
                "appkey"=>"your appkey",
                "appsecret"=>"your secret key",
                "redirect_uri"=>"XXXXXX",
                "authorization_url"=>"https://graph.renren.com/oauth/token",
                "login_url"=>"https://graph.renren.com/oauth/authorize"<span 
            );

    </span><span function</span><span  __construct()
    {
        </span><span $this</span>-><span qq_openlogin();
    }
    
    </span><span function</span><span  qq_openlogin(){
        parent</span>::<span __construct();
    }

    </span><span function</span><span  get_access_token(){
        </span><span $response</span>    =    parent::<span get_access_token();

        </span><span $userinfo</span> = json_decode(<span $response</span><span );

        </span><span return</span> <span $userinfo</span><span ;
        </span><span /*</span><span 
                access_token:获取的Access Token;
                expires_in:Access Token的有效期,以秒为单位;
                refresh_token:用于刷新Access Token 的 Refresh Token,长期有效,不会过期;
                scope:Access Token最终的访问范围,既用户实际授予的权限列表(用户在授权页面时,有可能会取消掉某些请求的权限)。关于权限的具体信息请参考
        </span><span */</span><span 
    }

    </span><span /*</span><span 获取登陆页面URL</span><span */</span>
    <span public</span> <span function</span><span  login_url(){
        
        </span><span if</span>(<span empty</span>(<span $this</span>-><span config)){
            </span><span return</span> <span false</span><span ; 
        }
        
        </span><span $config</span> = <span $this</span>-><span config;
        </span><span $login_url</span>    =    <span $config</span>['login_url'<span ];
        </span><span $array</span> = <span array</span><span (
            </span>"response_type"=>"code",
            "client_id"=><span $config</span>['appid'],
            "redirect_uri"=><span urlencode</span>( <span $config</span>['redirect_uri'<span ] )
        );

        </span><span $this</span>->set(<span $array</span><span );

        </span><span $url</span>    =  <span $this</span>->combineURL(<span $login_url</span> , <span $this</span>-><span _param);

        </span><span if</span>(<span $url</span><span ){
            @</span><span header</span>("Location:".<span $url</span><span );
        }</span><span else</span><span {
            </span><span return</span> <span false</span><span ;
        }
    }

}</span>

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/440395.htmlTechArticle可以直接拿去用了 ? = "" = - ( ( - = - = ['login_url' ['state'] = = ( ( (), = "response_type"="code", "state" = , "client_id"= ['appkey'], "redirect_uri"= ( ['redirect_uri'...

相关文章

淘宝
淘宝

淘宝是一个好逛、丰富、有趣的消费生活社区,每天有亿万消费者来淘宝“逛街”:发现好物、找到乐趣、表达体验……淘宝能满足人们生活中的各种需求,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

46

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

178

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

51

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

92

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

102

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

227

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

532

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

171

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
新浪SEA开放平台开发文档
新浪SEA开放平台开发文档

共45课时 | 26万人学习

Webpack5实战教程(从入门到精通)
Webpack5实战教程(从入门到精通)

共40课时 | 5.3万人学习

仿腾讯视频.电视剧首页
仿腾讯视频.电视剧首页

共11课时 | 4.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号