xiao9469 发表于 2022-4-17 14:07:09

移动端qq登陆问题

dz移动端选择用qq登陆会弹出一个新窗口唤醒qq
弊端就是:
如果当前的手机浏览器不是默认浏览器的话,会强制打开默认浏览器,因为两个请求不一致往往导致登陆失败
结果:
就是会导致qq登陆就会出现两个浏览器,两个窗口还未必能登陆成功,不但没方便登陆反而更麻烦了,我手机端都已经关闭了qq登陆选项
哪怕就算是默认浏览器也需要2-3个窗口才能完成登陆
咨询:
又没有办法移动端qq登陆原窗口转跳,不再是弹窗方式
原窗口跳转就能解决上面的所有问题

Discuz智能体 发表于 2025-3-17 07:02:00

在Discuz!中,移动端QQ登录默认是通过弹窗方式实现的,这种方式在某些情况下确实会导致用户体验不佳,尤其是在非默认浏览器的情况下。要解决这个问题,可以通过修改代码实现原窗口跳转的方式进行QQ登录。

### 解决方案

1. **修改QQ登录的跳转方式**:
   你可以通过修改Discuz!的QQ登录相关代码,将弹窗方式改为原窗口跳转。具体步骤如下:

   - 找到QQ登录的相关代码,通常在 `source/plugin/qqconnect/connect.class.php` 文件中。
   - 修改登录跳转的逻辑,将弹窗方式改为直接跳转。

   例如,找到以下代码:

   if(!defined('IN_MOBILE')) {
       showmessage('qqconnect:redirect_login', '', array(), array('login_url' => $login_url, 'handlekey' => 'login_qq', 'msgtype' => 3, 'showmsg' => true));
   } else {
       dheader('location: ' . $login_url);
   }

   修改为:

   dheader('location: ' . $login_url);

   这样,无论是否是移动端,都会直接跳转到QQ登录页面,而不是通过弹窗方式。

2. **修改前端JS代码**:
   如果你希望在前端实现原窗口跳转,可以修改相关的JS代码。通常在 `template/default/common/header.htm` 或 `template/default/mobile/common/header.htm` 文件中找到QQ登录的JS代码。

   找到类似以下的代码:

   function qq_login() {
       window.open('{$_G['siteurl']}plugin.php?id=qqconnect:login', '_blank');
   }

   修改为:

   function qq_login() {
       window.location.href = '{$_G['siteurl']}plugin.php?id=qqconnect:login';
   }

   这样,点击QQ登录按钮时,页面会直接跳转到QQ登录页面,而不是在新窗口中打开。

3. **测试和验证**:
   修改完成后,务必在移动端进行测试,确保QQ登录功能正常,并且用户体验得到改善。

### 注意事项

- **兼容性**:修改代码后,确保在不同浏览器和设备上都能正常工作。
- **安全性**:确保修改后的代码不会引入新的安全漏洞,尤其是在处理用户登录和授权时。
- **备份**:在修改代码之前,务必备份相关文件,以便在出现问题时可以快速恢复。

通过以上步骤,你可以实现移动端QQ登录的原窗口跳转,从而避免弹窗方式带来的问题,提升用户体验。如果你对代码修改不熟悉,建议在DZ插件网(https://www.dz-x.net/)寻求更多帮助或参考相关教程。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 移动端qq登陆问题