在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
目前只做了微博和qq的,前面的去connect.qq.com,open.weibo.com注册的步骤省略 qq和weibo站点都有可以现在的php版本的api,qq的api相对高大上一些。 <script> function toLogin(who) { //以下为按钮点击事件的逻辑。注意这里要重新打开窗口 //否则后面跳转到QQ登录,授权页面时会直接缩小当前浏览器的窗口,而不是打开新窗口 整个实现登录的流程在一个独立的包里结构如下 /dlt---根目录 /dlt/index.php---入口地址 /dlt/callback.php--回调地址 /dlt/lib---自定类,配置义目录 /dlt/lib/dlt_client.php---流程入口 /dlt/lib/db_client.php /dlt/lib/model.php /dlt/sdk---第三方sdk目录 /dlt/qq/API---qq的sdk目录,目录详情省略 /dlt/wb/API---weibo的sdk目录,目录详情省略 入口地址 <?php $wherego = $_GET['wherego']; if(!empty($wherego) && in_array( $wherego,array('qq','wb'))){ require 'lib/dlt_client.php'; $dlt_client = new DLT($wherego); $dlt_client->save_referer(); $dlt_client->go(); }else{ exit('传入参数错误'); } 回调地址 <?php 流程入口文件 <?php class DLT { public $who; public $db; public $user_model; public $e_logo_prefix = 'http://user.X.com/static/'; private $_sdk_path; private $_dlt_back_url; public function __construct($who){ $this->who = $who; $this->_sdk_path = dirname(dirname(__FILE__)) . '/sdk/'; } public function save_referer(){ if(!empty($_GET['back_url'])){ setcookie ('dlt_back', $_GET['back_url'], time()+60*5, '/', 'X.com'); }else if(!empty($_SERVER['HTTP_REFERER'])){ setcookie ('dlt_back', $_SERVER['HTTP_REFERER'], time()+60*5, '/', 'X.com'); }else{ return false; } } public function go(){ $function_name = 'go_' . $this->who; $this->$function_name(); } public function callback(){ $this->_dlt_back_url = $_COOKIE['dlt_back']; if(empty($this->_dlt_back_url)){ $this->_dlt_back_url = 'http://user.X.com'; } $function_name = 'callback_' . $this->who; $this->$function_name(); } public function go_qq(){ require_once($this->_sdk_path . "qq/API/qqConnectAPI.php"); $qc = new QC(); $qc->qq_login(); } public function callback_qq(){ require_once($this->_sdk_path . "qq/API/qqConnectAPI.php"); $qc = new QC(); $access_token = $qc->qq_callback(); $openid = $qc->get_openid(); //var_dump($access_token); //var_dump($openid); if(empty($openid) || empty($access_token)){ exit('get QQ token error!'); } $qc = new QC($access_token,$openid); $arr = $qc->get_user_info(); //var_dump($arr);exit; if(!isset($arr['nickname'])){ exit('get QQ userinfo error!'); } $user_info['m_o_name'] = $arr["nickname"]; $user_info['m_dlt_type'] = 'qq'; $user_info['m_dlt_id'] = $openid; $this->do_login($user_info); } public function go_wb(){ require_once($this->_sdk_path . "wb/API/wbConnectAPI.php"); $wbc = new WBC(); $wbc->wb_login(); } public function callback_wb(){ require_once($this->_sdk_path . "wb/API/wbConnectAPI.php"); $wbc = new WBC(); $access_token = $wbc->get_token(); $uid = $wbc->get_uid(); //var_dump($access_token); //var_dump($uid); if(empty($uid) || empty($access_token)){ exit('get WB token error!'); } $arr = $wbc->get_user_info(); //var_dump($arr['name']);exit; if(!isset($arr['name'])){ exit('get WB userinfo error!'); } $user_info['m_o_name'] = $arr["name"]; $user_info['m_dlt_type'] = 'wb'; $user_info['m_dlt_id'] = $uid; $this->do_login($user_info); } public function do_login($user_info){ require 'model.php'; $this->model = new Model();
|
2022-08-30
2022-08-17
2022-11-06
2022-08-14
2022-08-18
请发表评论