主要實現(xiàn)是當(dāng)你在自己開發(fā)的網(wǎng)站登錄或者退出之后, discuz論壇也會同步登錄和退出
1.ucenter通信,網(wǎng)上很多教程,所有語言開發(fā)的網(wǎng)站通信都是這樣。如果安裝了discuz3.2的話好像不能獲得ucenter的配置信息,不過你可以在discuz的后臺查詢ucenter的配置信息。不贅述
2.當(dāng)你把一些文件拷貝到你的項目的根目錄下之后,注意config.inc.php里面的配置信息可都是discuz的信息,還要注意什么app_id撒的,按照網(wǎng)上的來吧
?補(bǔ)充:如果一切都覺得沒有問題 ?還是通信不成功 ?那就不用管了 個人認(rèn)為這是一個坑,不用深究 ,按下面的方式
在應(yīng)用目錄下寫測試腳本執(zhí)行 ?查看得到的結(jié)果 ?如果能走通就不用管通信了
3.去http://www.discuz.net/thread-909678-1-1.html下載一份開發(fā)手冊,解壓打開developerguide/index.html查看api函數(shù)了解一下用戶接口.?
? ? 1.用戶注冊integer uc_user_register(string username , string password , string email),傳遞3個參數(shù)username,password,email。我用的時python,不可以直接用php的代碼,當(dāng)然也可以間接的在python中調(diào)用php代碼,不過處理有點麻煩,大家自行g(shù)oogle。我就使用php的腳本調(diào)用,徹底分離2種語言,我就在項目的根目錄下的uc_client下建立一個php_pro的目錄并創(chuàng)建一個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);
//獲取腳本命令參數(shù)
$username = $argv[0]; ??
$password = $argv[1];
$email = $argv[2];
//執(zhí)行api函數(shù)
echo uc_user_register($username,$password,$email);
?> ?
寫好了腳本,就可以在注冊完之后執(zhí)行腳本,也可以做任務(wù)隊列(詳見我的redis任務(wù)隊列).我用python,執(zhí)行腳本
import os
os.popen('php /usr/local/developer-wf/uc_client/php_pro/register.php '+username+' '+password+' '+email)
如果是nodejs可以創(chuàng)建進(jìn)程exec('php /usr/local/developer-wf/uc_client/php_pro/register.php '+username+' '+password+' '+email); ?java撒的自行g(shù)oogle或者百度, 這樣你的discuz系統(tǒng)也會有你剛剛注冊的用戶
2.用戶同步登陸
? ? ? ?我們需求是當(dāng)用戶在我們公司網(wǎng)站登陸之后,在瀏覽器中另一個標(biāo)簽頁中刷新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;
};
調(diào)用同步登錄函數(shù)時回返回$ucsyslogin變量打印 使用python獲取這個變量,該變量返回的是一個js,應(yīng)該是操作cookie的js腳本
import commands
result = commands.getstatusoutput('php /usr/local/developer-wf/uc_client/php_pro/logout.php')
print result[1]
有可能你返回的js代碼是空得,我也是按照網(wǎng)上的教材把我們下載的ucenter的developerguide的client和example下的api覆蓋項目根目錄下的uc_client的目錄(你得先備份啊)以及api目錄然后就好了。另外你得保證你ucenter的應(yīng)用管理中有至少2個應(yīng)用,一個是你本身的應(yīng)用,這個通信成功還是比較容易的。然后你可以取出這個script里面的src再瀏覽器中執(zhí)行以下 再刷新以下discuz論壇就登錄上去了。這個就交給前端去執(zhí)行吧(注意不用使用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;
?>