这通常通过集成QQ互联(QQ登录)的API来实现,整个过程主要分为申请开发者资质、配置网站和修改DedeCMS程序三个步骤。
第一步:申请QQ互联开发者资质并获取配置信息
这是最关键的一步,你需要向腾讯申请,让你的网站能够合法地使用QQ登录功能。
-
访问QQ互联官网
- 打开浏览器,访问 QQ互联开放平台。
-
注册/登录账号
你需要有一个QQ账号,并使用这个QQ账号登录QQ互联平台,如果是个人开发者,直接登录即可;如果是企业,需要完成企业认证。
-
创建应用
- 登录后,在开发者后台找到 “应用管理” -> “网站应用” -> “创建应用”。
- 选择 “网站” 类型的应用。
- 填写应用信息:
- 应用名称:给你的网站起一个名字,我的个人博客”。
- 应用领域:选择一个最符合你网站类型的领域,如“博客/空间”。
- 应用官网:填写你网站的网址。
- 平台信息:选择“PC网站”或“移动网站”,并填写对应的网址。
- 回调域:这是非常重要的一步! 填写你的网站会员登录成功后,QQ会跳转回来的页面地址,这个地址必须是完整的URL,
http://www.yourdomain.com/member/qq_callback.php,我们稍后会在DedeCMS中创建这个文件。
-
提交审核
填写完所有信息后,提交审核,审核通常需要1-3个工作日,审核通过后,你的应用才会生效。
-
获取AppID和AppKey
- 审核通过后,在你的应用详情页面,你可以找到 “应用标识” (AppID) 和 “应用密钥” (AppKey),这两个值是后续配置DedeCMS的核心凭证,请务必复制并妥善保存。
第二步:在DedeCMS中创建必要的文件
我们需要创建一个用于处理QQ登录回调的PHP文件。
-
找到会员目录
- 通过FTP或文件管理器,登录你的网站服务器,找到DedeCMS的
/member/目录。
- 通过FTP或文件管理器,登录你的网站服务器,找到DedeCMS的
-
创建
qq_callback.php文件- 在
/member/目录下,新建一个名为qq_callback.php的文件。 - 将下面这段代码复制并粘贴到
qq_callback.php文件中。
<?php /** * QQ登录回调处理页面 * 本文件由DedeCMS QQ登录插件自动生成 */ require_once '../include/common.inc.php'; require_once '../include/memberlogin.class.php'; require_once '../include/qconnect.class.php'; // 确保这个类文件存在,如果不存在需要创建 // 检查是否是通过QQ回调过来的 if (isset($_GET['code'])) { // 实例化QQConnect类 $qc = new QC(); // 获取Access Token $access_token = $qc->qq_callback(); // 获取OpenID $openid = $qc->get_openid(); // 使用Access Token和OpenID获取用户信息 $userInfo = $qc->get_user_info(); // 检查用户信息是否获取成功 if ($userInfo && isset($userInfo['nickname'])) { // 在这里编写你的用户同步或登录逻辑 // 1. 检查数据库中是否已存在该OpenID的用户 // 2. 如果存在,则直接登录 // 3. 如果不存在,则创建一个新用户,并关联OpenID // --- 示例逻辑 (需要根据你的数据库结构调整) --- $uid = 0; $query = "SELECT mid FROM `dede_member` WHERE `openid` = '{$openid}'"; $row = $dsql->GetOne($query); if ($row) { // 用户已存在,直接登录 $uid = $row['mid']; } else { // 用户不存在,创建新用户 $pwd = md5(time()); // 生成一个随机密码 $email = $userInfo['nickname'] . '@qq.com'; // 使用QQ昵称作为邮箱前缀(示例,可自定义) $username = $userInfo['nickname']; // 调用DedeCMS的会员注册函数 $regtime = time(); $spacesta = 0; $email = preg_replace("#[ \t\r\n\,;]#", "", $email); $sql = "INSERT INTO `dede_member` (`mtype`, `userid`, `pwd`, `uname`, `sex`, `email`, `scores`, `money`, `point`, `matt`, `face`, `safequestion`, `safeanswer`, `jointime`, `joinip`, `logintime`, `loginip`) VALUES ('个人', '{$username}', '{$pwd}', '{$username}', '{$userInfo['gender']}', '{$email}', '0', '0', '0', '0', '{$userInfo['figureurl_qq_1']}', '0', '', '{$regtime}', '{$cfg_ml->GetIP()}', '{$regtime}', '{$cfg_ml->GetIP()}');"; if ($dsql->ExecuteNoneQuery($sql)) { $newid = $dsql->GetLastID(); // 同步到会员空间表 $inquery = "INSERT INTO `dede_member_space` (`mid`, `spacename`, `sign`, `bbs`) VALUES ('{$newid}', '{$username}', '', '0');"; $dsql->ExecuteNoneQuery($inquery); $uid = $newid; } } // 如果成功获取到用户ID,则登录 if ($uid > 0) { $ml = new MemberLogin(); $ml->loginSuccess($uid); // 登录成功 ShowMsg('登录成功,正在跳转...', '../index.php', 0, 1); exit(); } } } // 如果发生错误,跳转到登录页 ShowMsg('QQ登录失败,请重试。', 'login.php', 0, 1); exit(); ?> - 在
注意:上面的代码中用到了 qconnect.class.php,你可能需要自己创建这个类来处理QQ的API请求,一个更简单的方法是使用现成的第三方DedeCMS QQ登录插件,这些插件通常已经封装好了所有逻辑,你只需要配置AppID和AppKey即可。
第三步:修改DedeCMS模板和配置
这一步是在页面上添加“QQ登录”的按钮,并确保它能正确跳转到QQ的授权页面。
-
准备QQ登录图标
- 从QQ互联官网下载官方的QQ登录图标,并上传到你的网站模板目录下,
/templets/default/images/。
- 从QQ互联官网下载官方的QQ登录图标,并上传到你的网站模板目录下,
-
修改登录页面模板
- 打开你的登录页面模板文件,通常位于
/templets/default/login.htm。 - 在你希望显示QQ登录按钮的位置(在用户名密码输入框下方),添加以下HTML代码:
<div class="other-login"> <p>使用第三方账号登录:</p> <a href="javascript:void(0);" onclick="location.href='{dede:global.cfg_memberurl/}/connect.php?op=login&ref={$ref}';"> <img src="{dede:global.cfg_templets_skin/}/images/qq_login.png" alt="使用QQ登录" /> </a> </div>- 说明:
qq_login.png是你刚才上传的图标,请确保路径正确。connect.php是一个需要我们创建的文件,用于发起QQ登录请求。
- 打开你的登录页面模板文件,通常位于
-
创建
connect.php文件- 在
/member/目录下,创建一个名为connect.php的文件。 - 这个文件的作用是调用
qconnect.class.php中的方法,生成QQ登录的授权URL,并跳转过去。
<?php /** * DedeCMS QQ登录入口 */ require_once '../include/common.inc.php'; require_once '../include/qconnect.class.php'; // 同样,这个类需要存在 $qc = new QC(); $qc->qq_login(); // 此方法会直接跳转到QQ的授权页面 ?>
- 在
推荐方案:使用现成的插件
手动修改代码比较繁琐,且容易出错,特别是处理各种边界情况和安全性问题。强烈推荐使用现成的DedeCMS QQ登录插件。
使用插件的优势:
- 简单快捷:通常只需要上传插件文件,然后在后台进行简单的配置(填写AppID和AppKey)即可。
- 功能完整:插件已经封装了从发起登录、获取信息、创建用户、自动登录到退出的所有逻辑。
- 安全稳定:成熟的插件经过了大量用户的测试,比个人编写的代码更安全、更稳定。
- 易于维护:当QQ官方接口更新时,插件作者通常会更新插件,你只需要升级即可。
如何找到插件:
- DedeCMS官方市场:登录你的DedeCMS后台,在“模块” -> “DedeCMS应用中心”中搜索“QQ登录”。
- 第三方DedeCMS资源站:如“织梦吧”、“DedeCms模板吧”等网站,搜索“DedeCMS QQ登录插件”,下载并按照说明文档进行安装。
使用插件的通用步骤:
- 下载插件包,解压。
- 通过FTP将插件文件上传到
/member/或/include/等指定目录。 - 登录DedeCMS后台,在“模块管理”或“插件管理”中找到该插件,进行安装。
- 安装后,在插件设置页面填入你在QQ互联平台申请到的 AppID 和 AppKey。
- 插件通常会自动修改登录模板,或在后台提供“一键生成”按钮,你只需点击即可在登录页面添加QQ登录按钮。
- 清理缓存,访问登录页面测试。
| 方法 | 优点 | 缺点 | 适合人群 |
|---|---|---|---|
| 手动修改 | 完全自定义,无插件依赖 | 步骤繁琐,代码量大,易出错,安全性需自己保障 | 有PHP开发经验,想深入了解原理的开发者 |
| 使用插件 | 简单、快速、稳定、安全 | 功能可能受限于插件本身,多一个插件 | 绝大多数用户,强烈推荐 |
对于绝大多数站长来说,使用成熟的第三方插件是最佳选择,它能够让你以最小的成本和风险,快速实现QQ登录功能,让你更专注于网站内容的建设。
