discuz社区与java web的钉钉手机版整合(二)

上一篇讲到如何绕开discuz的登录验证,使得在url传一个username的账号就可以自动登录。这篇主要讲的是钉钉的免登陆,由于官方网都有所以,一开始的在钉钉增加添加微应用这个就省略了。

这里有一个前提:即本来的系统(我公司的是erp系统)已经与钉钉整合了,即钉钉已经可以获取erp系统当前的登录账号。至于怎样弄,先忽略。

现在假设登录钉钉后就能通过钉钉接口获取登录账号,discuz属于第三个整合的系统。

总步骤:

1.在钉钉开通微应用(参考官方网站)

2.获取原来erp系统(javaweb系统)中coreID和corpSecret的值();注意:不是discuz的值


3.下载js-api免登陆的例子程序(钉钉官方的开发文档中有链接),解压,放在主机网站跟目录里面。

4.打开env.php,添加coreid和secret的值,这个值在前面可以获取,然后通过url访问,会发现可以运行:

define("CORPID", "dingb1694cc632dd706c");
define("SECRET", "g3rf9IV26TEH7VbkrSnhM04ZM-4azaFTI7FgKL2Obl2sC7iyBJPWi4aLUp9KDVs3");
<span style="color:#ff0000;">注意:这个是需要php5.4才支持,5.3也能支持,前提是熟悉php版本特性,会根据版本的不同修改一些函数。</span>
5.打开jsapi.php中的文件,发现引入了demo.js,免登陆需要用到这个js的 dd.runtime.permission.requestAuthCode()函数。修改函数如下:

dd.runtime.permission.requestAuthCode({
        corpId: _config.corpId,
        onSuccess: function (info) {
            //logger.i('authcode: ' + info.code);
			//alert("11"+ROOT_URL);
			window.location=ROOT_URL+"/userinfo.php?code=" + info.code; 
			
			/*
            $.ajax({
                url: '/userinfo.php?code=' + info.code,
                type: 'GET',
                success: function (data, status, xhr) {
				 alert("3");
                    var info = JSON.parse(JSON.parse(data));
                    if (info.errcode === 0) {
                        logger.i('user id: ' + info.userid);
                    }
                    else {
                        logger.e('auth error: ' + data);
                    }
                },
                error: function (xhr, errorType, error) {
                    logger.e(errorType + ', ' + error);
                }
				
				
            });*/
        },
        onFail: function (err) {
            //logger.e('fail: ' + JSON.stringify(err));
        }
    });
});

6. 然后打开userinfo.php,会发现打印出json格式$userinfo.(如果出错,把php5.4高版本的json_encode(long,long)改成json_encode(onject)),这里回忆一下php的json处理函数json_encode($userInfo);这是把array对象en成json对象,json_decode()是把json对象转换成java对象。把$user = json_decode($userInfo,true);,然后用数组形式获取userid的值即可。

7.构建访问discuz论坛的免登陆路径,然后重定向:

$url = "http://192.168.203.199:8001/forum/member.php?mod=logging&action=login&app=ding&ding_username=".$user['userid']; 
//echo "<script type=\"text/javascript\">alert(\"".$url."\") </script>";
echo "<script type=\"text/javascript\">window.location=\"".$url."\"</script>";
8.注意可以访问但是不能登录的原因:可能是因为论坛本身还没有该erp系统或者钉钉提供的userid账号。






你可能感兴趣的:(discuz社区与java web的钉钉手机版整合(二))