升平网络

 找回密码
 立即注册

快捷登录

查看: 6386|回复: 0

微信一键登录DISCUZ手机站,不再进入微社区

[复制链接]

47

主题

53

帖子

319

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
319
发表于 2018-10-16 20:34:58 | 显示全部楼层 |阅读模式

这是一个创建于2018-10-16 20:34的主题,其中的信息可能已经有所发展或是发生改变。

官方提供的【微信登录】插件太鸡肋,是自动跳转到微社区的,并不是进入我们想进入的手机网站。我们的需求其实非常简单,就是要实现在任意一个手机触屏版页面点击一下登录按钮,然后就自动用微信账号登录,登录成功以后再跳转到之前的页面。


首先,跟大家强调的是:使用今天这个方法不管是订阅号还是服务号,不管是认证过的还是没有认证过的,甚至是没有微信公众号的,都可以实现微信一键登录!



1、首先安装官方【微信登陆】插件,并开通微社区,这里需要利用微社区的登陆功能实现。


2、打开source/plugin/wechat/response.class.php, 找到public static function redirect($type)重定向函数删除或者注释掉。

  1. public static function redirect($type) {
  2.                 self::_init();
  3.                 global $_G;
  4.                 if(!$_G['wechat']['setting']['wsq_allow']) {
  5.                         return;
  6.                 }
  7.                 if($_G['wechat']['setting']['wsq_siteid'] && !defined('IN_MOBILE_API')) {
  8.                         $_G['wechat']['setting']['wsq_wapdefault'] = !self::_checkrobot() ? $_G['wechat']['setting']['wsq_wapdefault'] : false;
  9.                         $in_wechat = $_G['wechat']['setting']['wsq_wapdefault'] ? true : strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false;
  10.                         $fromwap = $_G['wechat']['setting']['wsq_wapdefault'] && strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') === false;
  11.                         $url = wsq::$WSQ_DOMAIN.'siteid='.$_G['wechat']['setting']['wsq_siteid'].($fromwap ? '&source=wap' : '').'&c=index&a=';
  12.                         if($type) {
  13.                                 $modid = $_G['basescript'].'::'.CURMODULE;
  14.                                 if($in_wechat) {
  15.                                         if(($modid == 'forum::viewthread' || $modid == 'group::viewthread') && !empty($_GET['tid'])) {
  16.                                                 dheader('location: '.$url.'viewthread&tid='.$_GET['tid']);
  17.                                         } elseif(($modid == 'forum::forumdisplay' || $modid == 'group::forumdisplay') && !empty($_GET['fid'])) {
  18.                                                 dheader('location: '.$url.'index&fid='.$_GET['fid']);
  19.                                         } elseif($modid == 'forum::index') {
  20.                                                 dheader('location: '.$url.'index');
  21.                                         }
  22.                                 }
  23.                         } else {
  24.                                 if(isset($_GET['referer'])) {
  25.                                         return $_GET['referer'];
  26.                                 } elseif(isset($_GET['pluginid'])) {
  27.                                         return $url.'plugin&pluginid='.urlencode($_GET['pluginid']).'¶m='.urlencode($_GET['param']);
  28.                                 } else {
  29.                                         return $url.'index';
  30.                                 }
  31.                         }
  32.                 }

  33.         }
复制代码



3、后台-全局-手机版访问设置,开启手机版选 是 ,开启手机浏览器自动跳转选 是 ,现在从微信进入手机站不再跳转微社区了,但是并不能实现微信登陆。


4、根目录新建do.php文件,除高亮部分,其余与portal.php一致。内容如下:

  1. <?php

  2. define('APPTYPEID', 4);
  3. define('CURSCRIPT', 'portal');

  4. require './source/class/class_core.php';
  5. $discuz = C::app();

  6. $cachelist = array('userapp', 'portalcategory', 'diytemplatenameportal');
  7. $discuz->cachelist = $cachelist;
  8. $discuz->init();

  9. require DISCUZ_ROOT.'./source/function/function_home.php';
  10. require DISCUZ_ROOT.'./source/function/function_portal.php';

  11. if(empty($_GET['mod']) || !in_array($_GET['mod'], array('list', 'view', 'comment', 'portalcp', 'topic', 'attachment', 'rss', 'block'))) $_GET['mod'] = 'index';


  12. define('CURMODULE', $_GET['mod']);
  13. runhooks();

  14. $navtitle = str_replace('{bbname}', $_G['setting']['bbname'], $_G['setting']['seotitle']['portal']);
  15. $_G['disabledwidthauto'] = 1;

  16. require_once libfile('do/'.$_GET['mod'], 'module');

  17. ?>
复制代码



5、在source/module文件夹下新建do文件夹,新建do_index.php文件,内容如下:



  1. <?php

  2. if(!defined('IN_DISCUZ')) {
  3.         exit('Access Denied');
  4. }

  5. if ($_GET['op']='wxlogin')
  6. {
  7.         include_once template('diy:do/wxlogin');
  8. }

  9. ?>
复制代码




6、在template/default/touch文件夹下新建do文件夹(这里是默认模板,其他模板在对应模板的touch下同理),在do文件夹下新建wxlogin.htm,注意更换里面的网页地址和微社区ID,内容如下:



  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4.     <meta charset="gb2312">
  5.     <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
  6.     <meta name="apple-mobile-web-app-capable" content="yes"/>
  7.     <meta name="apple-mobile-web-app-status-bar-style" content="black"/>
  8.     <meta content="telephone=no" name="format-detection"/>
  9.     <title>$navtitle</title>
  10. </head>
  11. <body>
  12. <!--{if $_G[uid]}-->
  13. <script language="javascript">document.location = '你的网站地址';</script>
  14. <!--{else}-->
  15. <!--{if $_GET['login'] == 'yes'}-->
  16. <div id="nolog" style="width:100%; padding:100px 0; font-size:18px; text-align:center;">微信登录中,请稍后……</div>
  17. <iframe name="denglu" id="denglu" src="http://wsq.discuz.qq.com//?siteid=微社区ID&c=index&a=index&mobile=2&login=yes" width="1" height="1" style="position:absolute; left:-1px;"></iframe>
  18. <script type="text/javascript">
  19. if (document.getElementById("denglu").attachEvent){
  20.     document.getElementById("denglu").attachEvent("onload", function(){
  21.         document.location = '你的网站地址';
  22.     });
  23. } else {
  24.     document.getElementById("denglu").onload = function(){
  25.         document.location = '你的网站地址';
  26.     };
  27. }
  28. document.body.appendChild(iframe);
  29. </script>
  30. <!--{else}-->
  31. <style>body{background:#eeeff3; margin:0; padding:0;}</style>
  32. <div style="width:100%; background:#4cb131; color:#fff; font-size:16px; text-align:center; line-height:24px;">
  33.         <div style="padding:20px;"><img src="new/dun.jpg" width="30%" /><br /><br />该网页由{$_G['setting']['sitename']}开发,向其提供以下权限即可继续操作!</div>
  34. </div>
  35. <div style="width:100%; padding:20px 0; text-align:left; font-size:14px; color:#b3b4b6;">
  36.         <div style="padding:0 15px;"><img src="new/gou.jpg" height="14" style="margin-bottom:-2px;" /> 获得你的公开信息(昵称、头像等)</div>
  37. </div>
  38. <div style="width:100%; padding:0 0 20px; text-align:center;">
  39.         <div style="padding:10px;"><a href="do.php?op=wxlogin&login=yes" style="width:100%; display:block; height:50px; line-height:50px; font-size:20px; background:#03bd00; color:#fff; border-radius:5px;">确认登录</a></div>
  40. </div>
  41. <!--{/if}-->
  42. <!--{/if}-->
  43. </body>
  44. </html>
复制代码

7、打开template/default/touch/forum/discuz.htm文件,查找member.php,找到member.php?mod=logging&action=login这个登陆链接,改成do.php?op=wxlogin,这里有兴趣的朋友也可以用$_Get[]方式登陆后跳转到任意界面,这里默认为首页。到这里就全部完成设置了。

打赏鼓励一下!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|升平网络 ( 鄂ICP备18029072号 )|网站地图

GMT+8, 2024-12-28 12:48 , Processed in 0.100483 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表