整合ucenter,实现discuz与python或者nodejs网站互通

栏目: Python · 发布时间: 6年前

内容简介:整合ucenter,实现discuz与python或者nodejs网站互通

主要实现是当你在自己开发的网站登录或者退出之后, discuz论坛也会同步登录和退出

1.ucenter通信,网上很多教程,所有语言开发的网站通信都是这样。如果安装了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或者百度, 这样你的discuz系统也会有你刚刚注册的用户

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; ?>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Agile Web Development with Rails, Third Edition

Agile Web Development with Rails, Third Edition

Sam Ruby、Dave Thomas、David Heinemeier Hansson / Pragmatic Bookshelf / 2009-03-17 / USD 43.95

Rails just keeps on changing. Rails 2, released in 2008, brings hundreds of improvements, including new support for RESTful applications, new generator options, and so on. And, as importantly, we’ve a......一起来看看 《Agile Web Development with Rails, Third Edition》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具