您现在的位置是:首页 > cms教程 > Ecshop商城教程Ecshop商城教程
ecshop实现QQ登陆的方法
半梦2024-12-22Ecshop商城教程已有人查阅
导读1.首先去QQ网站申请一个 APP KEY 和 APPID ,申请地址为 .下载本站提供的QQ登录插件,保存到你网站根目录即可。打开你下载到的 QQ.PHP 文件,修改下面三个地方
1.首先去QQ网站申请一个 APP KEY 和 APPID ,申请地址为 .下载本站提供的QQ登录插件,保存到你网站根目录即可。打开你下载到的 QQ.PHP 文件,修改下面三个地方
qq.php文件
戏子提供以下美化(待验证,成功后标记)
相关美化:
在商城头部显示登陆者QQ昵称而非类似 qq2149C0692657C41D28A38465D9342FEE 的代码
1)、
进入ec后台 点击 “sql查询” 执行
ALTER TABLE `ecs_users` ADD `nick_name` VARCHAR( 100 ) NOT NULL ;
建立昵称字段。
注:这里要注意你的表前缀是不是ecs_, 不是请自行修改
2)、
打开include下lib_main.php 找到 get_user_info 这个函数找到
完毕。
备注:
用户中心的登陆者昵称可以根据步骤三来修改,建议不用改,因为就算这里改了后台即时注册的用户名具了解出于隐私保护依旧是不变的长代码,由于可能还要集成其他的快捷登录,戏子觉得没太大必要尽量不要改动太多,免得版本升级麻烦,我也是偷懒…
‘oauth_c**umer_key’=>’******’, // 这里输入在QQ网站申请到的APP ID
‘oauth_c**umer_secret’=>’**********’, //这里输入在QQ网站申请到的APP KEY
‘oauth_callback’=>”http:// .xxxxx.cn/qq.php?action=reg”, //这里要把.xxxx.cn 修改为你的真实域名
3.直接使用 http://你的域名/qq.php?action=login 进行登录,或者你在头文件里放一个连接指向 /qq.php?action=loginqq.php文件
<?php
/****
* 作者: 代码号
* 申请APPID的地址:
*/
define('IN_ECS', true);
require(dirname(__FILE__) . '/includes/init.php');
include_once(ROOT_PATH . 'includes/lib_transaction.php');
include_once(ROOT_PATH . 'includes/lib_passport.php');
function check_user($username){
$sql = "SELECT user_id FROM " . $GLOBALS['ecs']->table("users"). " WHERE user_name='$username'";
$row = $GLOBALS['db']->getRow($sql);
if (!empty($row)){ return true; }else{return false;}
}
$qq_oauth_config = array(
'oauth_consumer_key'=>'****', // 输入在QQ网站申请到的APP ID
'oauth_consumer_secret'=>'****', //输入在QQ网站申请到的APP KEY
'oauth_callback'=>"", // .****.cn 修改为你的域名
'oauth_request_token_url'=>"https://openapi.qzone.qq.com/oauth/qzoneoauth_request_token",
'oauth_authorize_url'=>'http://openapi.qzone.qq.com/oauth/qzoneoauth_authorize',
'oauth_request_access_token_url'=>'http://openapi.qzone.qq.com/oauth/qzoneoauth_access_token',
'user_info_url' => 'http://openapi.qzone.qq.com/user/get_user_info',
);
$action = isset($_GET['action']) ? $_GET['action'] : '';
$qq = new qq_oauth($qq_oauth_config);
switch($action){
//用户登录 Step1:请求临时token
case 'login':
$token = $qq->oauth_request_token();
$_SESSION['oauth_token_secret'] = $token['oauth_token_secret'];
$qq->authorize($token['oauth_token']);
break;
//Step4:Qzone引导用户跳转到第三方应用
case 'reg':
$qq->register_user();
$access_token = $qq->request_access_token();
if($token = $qq->save_access_token($access_token)){
$_SESSION['oauth_token'] = $token['oauth_token'];
$_SESSION['oauth_token_secret'] = $token['oauth_token_secret'];
$_SESSION['openid'] = $token['openid'];
header('Content-Type: text/html; charset=utf-8');
$user_info = json_decode($qq->get_user_info());
$nickname = $user_info->nickname; //返回QQ昵称
if($user_info->ret!=0){
exit("登录发生错误".$user_info->msg);
} else {
$username='qq'.$_SESSION['openid'];
$password=time();//随便弄个密码
$email=$_SESSION['openid'].'@qq.com';//没有返回邮箱
$back_act ="user.php";
/* 检测用户名 */
if (check_user($username)!==false){//账号存在直接完成登录
$GLOBALS['user']->set_session($username);
$GLOBALS['user']->set_cookie($username);
header("Location: user.php\n");
exit;
}else{//账号不存在就完成注册并自动登录
$reg_date = time();
$password =md5($password);
$GLOBALS['db']->query('INSERT INTO ' . $GLOBALS['ecs']->table("users") . "(`email`, `user_name`, `password`, `reg_time`, `last_login`, `last_ip`) VALUES ('$email', '$username', '$password', '$reg_date', '$reg_date', '$ip')");//账号不存在 就写入数据库 并登陆
$GLOBALS['user']->set_session($username);
$GLOBALS['user']->set_cookie($username);
header("Location: user.php\n");
exit;
}
//$user_info->figureurl'
}
}
break;
default :
}
class qq_oauth{
private $config;
function __construct($config){
$this->config = $config;
}
function C($name){
return isset($this->config[$name]) ? $this->config[$name] : FALSE;
}
function build_request_uri($url,$params=array(),$oauth_token_secret=''){
$oauth_consumer_key = $this->C('oauth_consumer_key');
$oauth_consumer_secret = $this->C('oauth_consumer_secret');
$params = array_merge(array(
'oauth_version'=>'1.0',
'oauth_signature_method'=>'HMAC-SHA1',
'oauth_timestamp'=>time(),
'oauth_nonce'=>rand(1000,99999999),
'oauth_consumer_key'=>$oauth_consumer_key,
),$params);
$encode_params = $params;
ksort($encode_params);
$oauth_signature = 'GET&'.urlencode($url).'&'.urlencode(http_build_query($encode_params));
$oauth_signature = base64_encode(hash_hmac('sha1',$oauth_signature,$oauth_consumer_secret.'&'.$oauth_token_secret,true));
$params['oauth_signature'] = $oauth_signature;
return $url.'?'.http_build_query($params);
}
function check_callback(){
if(isset($_GET['oauth_token']))
if(isset($_GET['openid']))
if(isset($_GET['oauth_signature']))
if(isset($_GET['timestamp']))
if(isset($_GET['oauth_vericode']))
return true;
return false;
}
function get_contents($url){
$curl = curl_init();
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_URL,$url);
return curl_exec($curl);
}
function oauth_request_token(){
$url = $this->build_request_uri($this->C('oauth_request_token_url'));
$tmp_oauth_token = $this->get_contents($url);
parse_str($tmp_oauth_token);
if(isset($error_code)) exit($error_code);
return array(
'oauth_token'=>$oauth_token,
'oauth_token_secret'=>$oauth_token_secret
);
}
function authorize($oauth_token){
$str = "HTTP/1.1 302 Found";
header($str);
$url = $this->C('oauth_authorize_url');
$query_strings = http_build_query(array(
'oauth_consumer_key'=>$this->C('oauth_consumer_key'),
'oauth_token'=>$oauth_token,
'oauth_callback'=>$this->C('oauth_callback'),
));
header('Location: '.$url.'?'.$query_strings);
}
function register_user(){
if($this->check_callback()){
//校验签名
$signature = base64_encode(hash_hmac('sha1',$_GET['openid'].$_GET['timestamp'],$this->C('oauth_consumer_secret'),true));
if(!empty($_GET['oauth_signature']) && $signature==$_GET['oauth_signature']){
$_SESSION['oauth_token'] = $_GET['oauth_token'];
$_SESSION['oauth_vericode'] = $_GET['oauth_vericode'];
return;
}
}
//校验未通过
exit('UNKNOW REQUEST');
}
function request_access_token(){
$url = $this->build_request_uri($this->C('oauth_request_access_token_url'),array(
'oauth_token'=>$_SESSION['oauth_token'],
'oauth_vericode'=>$_SESSION['oauth_vericode']
),$_SESSION['oauth_token_secret']);
return $this->get_contents($url);
}
function save_access_token($access_token_str){
parse_str($access_token_str,$access_token_arr);
if(isset($access_token_arr['error_code'])){
return FALSE;
} else {
return $access_token_arr;
}
}
function get_user_info(){
$url = $this->build_request_uri($this->C('user_info_url'),array(
'oauth_token'=>$_SESSION['oauth_token'],
'openid'=>$_SESSION['openid'],
),$_SESSION['oauth_token_secret']);
return $this->get_contents($url);
}
}
?>
<a href="?action=login">使用QQ登录网站</a>
以上内容已确定可行。只是登陆后显示效果为qq2149C0692657C41D28A38465D9342FEE戏子提供以下美化(待验证,成功后标记)
相关美化:
在商城头部显示登陆者QQ昵称而非类似 qq2149C0692657C41D28A38465D9342FEE 的代码
1)、
进入ec后台 点击 “sql查询” 执行
ALTER TABLE `ecs_users` ADD `nick_name` VARCHAR( 100 ) NOT NULL ;
建立昵称字段。
注:这里要注意你的表前缀是不是ecs_, 不是请自行修改
2)、
打开include下lib_main.php 找到 get_user_info 这个函数找到
$sql = ‘SELECT u.user_id, u.email, u.user_name, u.user_money, u.pay_points’.
‘ FROM ‘ .$GLOBALS['ecs']->table(‘users’). ‘ AS u ‘ .
” WHERE u.user_id = ‘$id’”;
替换为
$sql = ‘SELECT u.user_id, u.email, u.user_name,u.nick_name, u.user_money, u.pay_points’.
‘ FROM ‘ .$GLOBALS['ecs']->table(‘users’). ‘ AS u ‘ .
” WHERE u.user_id = ‘$id’”;
3)、打开模板文件夹里的member_info.lbi 找到{$user_info.username} 修改为 {if $user_info.nick_name}{$user_info.nick_name}{else}{$user_info.username}{/if}完毕。
备注:
用户中心的登陆者昵称可以根据步骤三来修改,建议不用改,因为就算这里改了后台即时注册的用户名具了解出于隐私保护依旧是不变的长代码,由于可能还要集成其他的快捷登录,戏子觉得没太大必要尽量不要改动太多,免得版本升级麻烦,我也是偷懒…
本文标签:
很赞哦! ()
相关教程
图文教程
ecshop商品分类页获取相册列表的方法
很久之前就看到过你好在商品列表页有获取到相册列表,但是一直没有实践过,感觉应该挺简单的吧,但是最近手上的项目刚好就需要这个功能,然后就想到网上查下资料
ecshop贺卡的设置和使用方法
今天为大家详细解说一下ECSHOP祝福贺卡设置。在实际的购物过程中,有时候购买的商品是送给朋友的礼物,可能这个商品就不经过自己的手而是直接发个朋友。
ecshop虚拟商品虚拟卡编辑和使用方法
您可以按照“虚拟卡分类”、“品牌”、“推荐类型”、“关键字”(“虚拟卡名称”或“货号”的一部分)进行查询。可以使用某个条件或某几个条件的组 合进行查询。
ecshop4.06以上版本安装后出现激活授权码窗口的删除方法
很多人ecshop3.6 ecshop4.0安装后进不了而且还弹出后出现激活授权码窗口,今天代码号就讲解下ecshop3.6 4.0以上版本安装后进不进去和弹出激活授权窗口删除方法
相关源码
-
(自适应)APP应用软件落地页单页推广页网站模板下载基于PbootCMS内核开发的响应式单页模板,为企业产品展示、服务推广等应用场景设计。通过简洁直观的视觉布局与高效的技术架构,帮助用户快速构建专业级落地页面,实现移动端与PC端数据实时同步展示。查看源码 -
(自适应)宽屏大气的净水器智能电子设备网站pbootcms源码下载本模板基于PbootCMS内核开发,为净水器设备、智能电子设备企业量身打造,采用响应式设计技术,可快速构建专业级企业官网。通过本模板可高效展示产品技术参数、解决方案及企业服务优势。查看源码 -
(PC+WAP)蓝色低碳环保隔断板装修装饰类网站pbootcms源码下载本款基于PbootCMS开发的网站模板为活动隔断板、装修装饰行业打造,特别适合移动隔断、环保隔断、办公分区等产品的展示与推广。查看源码 -
(自适应)黑色摄影作品工作室pbootcms模板网站源码下载为风景摄影、个人工作室打造的高端网站模板,基于PbootCMS开源内核开发,采用HTML5自适应架构,PC与移动端实时数据同步,适配各类拍摄作品展示需求。查看源码 -
(自适应响应式)家电维修清晰服务网站pbootcms模板免费下载本模板基于PbootCMS内核开发,为维修服务类企业打造,特别适合家电维修、设备维护等行业使用。通过简洁直观的界面设计,帮助企业快速搭建专业级服务平台,实现线上业务高效管理。查看源码 -
响应式WordPress简约博客主题Alt_BlogAlt_Blog主题该模板为博客内容展示设计,采用简约现代的风格理念,打造清晰的内容呈现平台。响应式布局确保在不同设备上都能获得良好的浏览体验,帮助博主更好地展示和分享内容。查看源码
| 分享笔记 (共有 篇笔记) |
