如何整合ucenter实现discuz与python互通

手册/FAQ (447) 2016-11-23 13:43:06

1.首先当然是于ucenter通信,在这里我详细描述了,网上很多教程,所有语言开发的网站通信都是这样,推荐一遍http://www.com133.com/46。如果安装了discuz3.2的话好像不能获得ucenter的配置信息,不过你可以在discuz的后台查询ucenter的配置信息。不赘述

2.当你把一些文件拷贝到你的项目的根目录下之后,注意config.inc.php里面的配置信息可都是discuz的信息,还要注意什么app_id撒的,按照网上的来吧

3.去http://www.discuz.net/thread-909678-1-1.html下载一份开发手册,解压打开developerguide/index.html查看api函数了解一下用户接口. 

1.用户注册integer uc_user_register(string username , string password , string email),传递3个参数username,password,email。我用的时python,不可以直接用php的代码,当然也可以间接的在python中调用php代码,不过处理有点麻烦,大家自行google。我就使用php的脚本调用,彻底分离2种语言,我就在项目的根目录下的uc_client下建立一个php_pro的目录并创建一个register.php的脚本

<?php

//引入文件,我的项目目录是developer-wf

include('/usr/local/developer-wf/config.inc.php');

include('/usr/local/developer-wf/uc_client/client.php');

array_shift($argv);

//获取脚本命令参数

$username = $argv[0];   

$password = $argv[1];

$email = $argv[2];

//执行api函数

echo uc_user_register($username,$password,$email);

?>  

写好了脚本,就可以在注册完之后执行脚本,也可以做任务队列(详见我的redis任务队列).我用python,执行脚本

import os

os.popen('php /usr/local/developer-wf/uc_client/php_pro/register.php '+username+' '+password+' '+email)

 

如果是nodejs可以创建进程exec('php /usr/local/developer-wf/uc_client/php_pro/register.php '+username+' '+password+' '+email);  java撒的自行google或者百度

 

2.用户同步登陆

       我们需求是当用户在我们公司网站登陆之后,在浏览器中另一个标签页中刷新discuz论坛,那么改用户就登陆了,只需要登陆一次  向上面那样,写php脚本

include('/usr/local/developer-wf/config.inc.php');

include('/usr/local/developer-wf/uc_client/client.php');

array_shift($argv);

$username = $argv[0];

$password = $argv[1];

list($uid, $username, $password, $email) = uc_user_login($username,$password);

//echo $uid>0;

if($uid>0){

#echo "login success";

$ucsyslogin = uc_user_synlogin($uid);

print $ucsyslogin;

};

调用同步登录函数时回返回$ucsyslogin变量打印 使用python获取这个变量,该变量返回的是一个js,应该是操作cookie的js脚本

import commands

result = commands.getstatusoutput('php /usr/local/developer-wf/uc_client/php_pro/logout.php')

print result[1]

有可能你返回的js代码是空得,我也是按照网上的教材把我们下载的ucenter的developerguide的client和example下的api覆盖项目根目录下的uc_client的目录(你得先备份啊)以及api目录然后就好了。另外你得保证你ucenter的应用管理中有至少2个应用,一个是你本身的应用,这个通信成功还是比较容易的。然后你可以取出这个script里面的src再浏览器中执行以下 再刷新以下discuz论坛就登录上去了。这个就交给前端去执行吧(注意不用使用2个顶级域名通信)

3.用户同步退出与上面一样贴一下代码

<?php

include('/usr/local/developer-wf/config.inc.php');

include('/usr/local/developer-wf/uc_client/client.php');

$synlogout = uc_user_synlogout();

print $synlogout;

?>

THE END