admin管理员组

文章数量:1532440

2023年12月28日发(作者:)

… 用第一 智慧密集 基于微信企业号实现Discuz实名注册和自动登录的设计 周意良 (云 锡业集团(控股)仃限责任公司,云南个Il1 66l000) 摘要:详细论述了通过微信企业号的OAuth2单点登录接口在企业内部实现了Dis ̄・tlZ的实名注册和自 动令采认证. 关键词:微信企业号;OAutl12接口;Discll】z程序 1 概述 Dis(・IIZ怂一个心川广泛的论坛程序,r}{于它的开源 特 ,rl『以很容易根据企业需求对局部功能进行定制修 改, 此 多企业都将Diseuz作为企业员T的网络社 随符《 联网跟帖评论服务管理规定》的颁布施 i .‘ 术所仃发帖、跟帖郁必须实 化..企业Discuz系 统 删 『2lIf¨』对沦坛川户实现实 管理、如何实现Dis— t [IZ的lJ  IJr 体系干¨企业内部员 的实名体系结合到一起. 允分利川 业已经建 的用户账 体系来实现I)iseuz的 实 册、人iiF和fl动登录,以提高管理员的管理效率, 他川广-髓录使刚 微信企业号存腾讯公司的大力推广 下.很多 业已经把微信企业号作为企业的一个厦要即 时通俯系统,微信企业号的实名认证体系以及微信系统 提供的OA lth2授权接口都可以很方便地与第j方应用 进行集成,通过利用做信企业号授权登录SDK接口实 现 1)iseuz系统的实名注册和自动登录。 2需求分析 业的微信企、 号内所有用 都是经过实名认证的 用r1,每个J-}】户都具备用户名( I 号)、姓名、手机号 等信息,把微信企业号的用户信息用来注册Discuz账 户,Discuz的账户也就实现实名制,通过这个机制,系 统_1『以实脱以下几项功能: (1)微信端自动注册和自动登录:通过微信企业号 径录1)ise -z系统,南于登录时已经携带了当前用户的实 名信息,Discuz系统可以判断当前用户是否是Diseuz系 统『1I J… ,如果是则可以以当前用户直接登录,不是则 1『以蛮观把! 前微信企业号用户注册到Discuz系统中, 注册成功后电可以』|J=接髓录。整个登录过程没有任何交 互操作,J1 J户就可以直接使用Discuz系统。 (2)PC端用r】f1动注册和登录:PC端用户通过点 击Discuz系统首页的微信企业号髓录图标按钮,跳转到 38 电麓螭翟技巧与维护 艮 2017翟,20电麓螭技巧与维 } 微信企业号二维码登录页面,川广1用微信扫描 求二维 码即可跳转到Discuz定制的登录处理页 .dI 这一过 程也携带了当前扫码的微信当前川户的真实信息,M样 可以对当前用户进行实铝注册和rj动登录 3实现原理及过程 3.1微信企业号OAuth2认证接口 这里重点介绍下Ⅱj『两种微信氽业号的OAulh接口 (1)OAuth身份验证接口,通过该接口I J’以 , 片J户 微信中直接注册和自动 录Dis( z系统、馓佶 业 提供的OAuth接[].企业如果需 员T #tttY4] 业网页时带上员一I 的身份信息,需设计的链接,微 lIl 页面将自动跳转至redirect—uri?c()de=CODE&stale=STArrF, 应用町根据code参数获得晁T的片j r]1D (2)成员登录授权接口,通过陔接口l1f以 现P(: 端用户通过微信扫捕授权二维码后实 汴l』JJ}币fI J,I动 录 Discuz系统。企业可以在自己的网站首贝中放 “微信 企业号登录”的入口,指引用』’。点击打丌登求授权贞 企业或服务商需要提供corp—id,跳转uri和stale参数. 其rf1 uri需要经过一次urlencode作为参数,stair JI1下 业或服务商自行校验session,防止跨域攻击 3.2 Discuz系统注册和自动登录机制 (1)Discuz系统用户注册 Discuz系统用户信息主要存放存])re qon|nlon—melll— her和preucenter_rnembers两张表巾,可以直接操作数 据库插入用户记录,完成注册和直接激活、 (2)Discuz系统用户自动登录 Discuz系统用户蹙录时.会把当前用户信息写人 作者简介:周意良(1976一), ,计算机1 帅,学 =}:,研究方向:计算机应用。 收稿日期:2017—07—02 

蔺豳豳…  ■OBILE^PPLIC盯10_-…………………………………………………………………………………………・- ¥formUsername=¥userlds一>Userld;//通过微信 co0kie.用户再次打开Discuz系统时,就可以直接读取 存放在c ookie中的用户信息完成直接登录。利朋Discuz 的cookie机制。把微信企业号传递的用户信息写入 cookie。就实现了Discuz系统的自动登录。系统提供的 用户cookie的写入接口dsetcookie函数,dsetcookie ( auth ,authcode(”{¥member【 password']}\t{¥member ∥企业号获取当前用户的帐号 ¥member=DB::fetch_first f.ISELECT FR0M ul— trax.pre—common—member WHERE employeeno= ¥formUsername )://通过员工帐号查询Discuz用户表 //中该用户的详细信息 if(¥member){ f,uid1)”, ENCODE ),¥cookietime,1,true),通过把微信 企业号传递的用户账户在DISCUZ数据表中查询到当前 用户的uid和password。然后写入cookie就可以实现 Discuz的自动登录 3.3 Dicuz系统的开发设计 在Discuz系统首页的根目录部分.开发配置两个注 dsetcookie( auth ,authcode(”{¥member【 pass— word 】}\t{¥member[ uid,】)“, ENCODE ), 1 234243,)= header(”Iocation:/forum.php“): )else{ ∥判断是否有token,没有重新获取 if(!isset(¥access_tokens)){ ∥获取token ¥gettokenurl= https://qyapi.weixin.qq.com/cgi- bin/gettoken7corp d: .¥appid. &corpsecret= .¥se— cret.”: 册登录页面,weixinlogin.php完成微信端注册登录的业 务处理逻辑,pclogin.php完成PC端用户登录注册的处 理逻辑,通过这两个页面实现把当前微信号携带的用户 真实信息进行登录验证,验证通过则把当前用户信息写 入cookie,验证不通过则把当前用户写入Discuz用户系 统,通过将用户信息写入cookie后.跳转到Diseuz就 实现了自动注册和自动登录过程。 (1)数据库修改部分 为了实名注册和认证,Discuz必须保存用户的员工 号和姓名,而Discuz系统数据表中只有一个usemame 字段,所以必须扩充一个字段用来保存用户工号,系统 ¥access_token=json—decode(file_get_contents (¥get_tokenur1)): —¥access_tokens=¥access_token一>access_token; ) 艮据token userid获取用户详细信息 nfour¥get_useril= https://qyapi.weixin.qq.COm/ —_cgi-bin/user/get?access_token= .¥access_tokens. &userid= .¥form—Username; ¥userl nfo=json_decode(file_get—contents (¥get—user_info—ur1),true); ¥formUsername ch=¥userlnfo[“name”】:  if(add—user(¥formUsername,¥formUsernamech。_本身的username的字段用来保存用户的实际姓名,这 个字段也是论坛在前台显示的用户帐号.通过这种设计 满足了用户既可用_T号登录,也可以用真实姓名登录。 主要涉及到Discuz数据库表为pre_common_member和 ¥formUsername,¥formUsername. @bb。Cn )>0){ ¥member=DB::fetch_first fl’SELECT FR0M ul— trax.pre_common—member WHERE employeeno= pre—ucenter_members两张表,可以在这两张表中各增加 一个字段,字段名为employeeno,字段的数据类型为 ¥formUsername ‘): char(15)。 dsetcookie( auth ,authcode(”{¥member【 pass— word 】}\t{¥member[ uid ) ) ENC0DE ), 1 234243 ): (2)微信实名册和自动登录Discuz部分关键代码 系统管理员在微信企业号后台,新建一个网页型应 用,并链接到Discuz系统的验证页面weixinlogin.php页 面,微信企业号用户可以直接打开该应用后进行实名注 册和自动登录。 按照用户验证接口说明,构建的URL链接。 在微信点击该应用后会自动跳转到weixinlogin.php. weixinlogin.php完成用户的注册或者验证.验证成功后 header(”Iocation:/forum.php”) ∥跳转到Discuz 其中函数add_user完成Diseuz系统用户注册和自动 激活,主要实现过程如下: functionadduser(¥username,¥username_chinese. ——¥pwd,Small,¥uid=0,¥questionid=”,¥answer=“, ¥regip=”) { 就可以直接打开Discuz系统的手机版。 weixinlogin.php关键代码: ¥salt=substr(uniqid(randO),一6): _甄20 17.2 0 :.39 

……… …… ……一… ’ “ 一一一 实用第一 智慧密集 ,…. . … . . 。 ¥password=md5(md5(¥password).¥salt); Scone=DB::insert( ucentermembers ,array( _代码 在Discuz首页中添加一个微信企业号的图标按钮. nese. username =>¥usernamechi_用户通过点击这个按钮出现二维码,用户通过微信扫描 二维码,PC端确认登录后就可以直接登录,或者自动 注册后登录。 password =>¥pwd, email =>¥mail. salt =>¥salt. employeeno =>¥username ),true); 使用微信企业号的成员登录接口。在Discuz系统的 首页放置用户登验证按钮,按照成员登录接口要求构建 if(Scone){ DB::insert( ucenter—memberfields ,array( uid =>Scone )): 的链接代码:<a href=”https:Hqy.weixin.qq.com/cgi_bin/ loginpage?corpid:wx木木术木半丰daae&redirecturi=http%3a% _—2f%2f'aa.bb.on%2fgenera1%2fbbs2%2f pclogin.php&user- type=atl”targe【=”): DB::insert( common—member_status',array( uid =>Scone )): ): DB::insert( commonmembercount array( —blank”>微信企业号登录</a>。其 中pclogin.php为用户扫描二维码后要跳转的登录认证 页面。pclogin.php处理逻辑与weixinlogin.php类似,只 是由于调用的是成员接口方法。只是获取用户信息稍 有差异。 _4结语 通过对Discuz注册认证代码的修改.已经实现了可 以通过微信企业号用户自动注册到Discuz系统中,在微 信中也可以直接登录Discuz系统。通过定制首页,也实 现了在PC端通过微信扫描二维码实现实名注册和自动 登录的功能。系统已经存企业实际环境中得到了成功应 uid =>Scone. extcredits l => 0 . extcredits2 => 0 . extcredits3 => 0 . )): } ¥uid=Scone; 用.既满足了国家对论坛实名管理的要求,又提高Dis. return¥uid; ) CHz管理员的管理效率,方便了论坛用户的登录,有利 于Discuz在企业的推广应用。 .址 . 止.s屯.址.址.S止.S屯.址艇 址 . 止.5止.s .¥ .址—址 址. -.j —址.址.址.S吐IJ 址—址—址—址—址 (3)PC端用r・微信二维码扫码登录实现的关键 .址.址 址 址.S止.址.S也.址.S止.址.1 . 也.工也 (上接第18页) 话题发现 2598-2601. .计算机应用研究,2013,3O(9): 4结语 基于频繁字符串的方法得到微博数据集中的热点话 题。实验证实,方法是可行的,有效的。由于文中所述 方法不用分词,省了一道工序,所以处理速度相对而言 较快。 [3】杨武,李阳,卢玲.基于用户角色定位的微博热点 话题检测方法lJJ.计算机应用,2013,33(11): 3076-3079. 【41孙日昕,马慧芳,师亚凯,等.融合词语关联关系 的自适应微博热点话题追踪算法[J].讨‘算机应用, 2014,34(12):3497-3501. 虽然以微博数据集进行的实验,但相信该方法应该 也可以应朋到其他文本数据集上,如BBS论坛上的帖 子组成的数据集 也可以运用到一般的普通的文本数据 集上用于热点话题发现。本系统可用于网络舆情监控。 参考文献 【5】赖锦辉,梁松.一种消除孤立点的微博热点话题发 现方法fJ1.计算机应用与软件,2014,31(1): 105-107.139. 【1】许杨.微博热点话题发现的方法实现[D】.天津: 南开大学,2014. [21】薛索芝,鲁燃,任圆圆.基于速度增长的微博热点 40 J~ 电奠■毽技巧与纛 —/,电 与_囊毒}8 霹 20 17幢.2i鹚0

本文标签: 用户登录企业微信系统