如何將自己的站點與Ucenter整合——詳解


UCenter整合 詳細教程

康盛的Ucenter產品非常的強大。即便不使用也有很好的學習價值。

在這里我們只說,如何將自己的網站和其他康盛的站點互通,當然是使用ucenter

為了,讓兩個應用之間可以互通(比如,自己的站點和uchome),我們需要先做一件事情,

將ucenter安裝包中的

UCenter_1.6.0_SC_UTF8\advanced\examples下的api文件夾,config.inc.php文件和uc_client文件夾(這個在上一級目錄),放到自己站點的一個目錄下。

一般我們可以將他們都統一放在一個目錄中,這里我們取名為ucclient,目錄結構形如

 

接下來我們所說這個三個文件分別代表什么。

1、Api文件夾中uc.php,你可以認為他是一個對外開放的接口文件,是REST形式的。該文件會根據被訪問時,所帶的參數執行相應的指令。

典型的樣子如下:

http://localhost/uctest/examples/api/uc.php?time=1325579904&code=b785JopNAE5CnbKhng8Ci%2BRHv%2BuPSty5ycbzXYUyTFHxhHWHOCNsXK2gFYJakUrXMalBjcg2m3KyY5142iT8drZCzMwvzyOq4aciGgnArt4icSj6Kg63WrsbflE3vE%2BHLpvIY3jsE5OPbmTe8C9EaDDY6%2Fwy2iyGtYDM

最關鍵的地方就是這個code參數,他是一個被加密了字符串,是基於base64和UC_KEY進行加密的。這個UC_KEY就是uc的通信密鑰。這個字符串包含了,我們要進行的操作(比如,synlogin),包含了我們需要的參數(比如username,password等)。所以,密鑰很關鍵,切不可設置的簡簡單單。

簡而言之,這個uc.php是用來被ucenter調用的,由此我們也可以知道,其中有不少方法,是需要我們根據我們自己站點的情況重寫的。Uc.php只是統一一個接口,讓ucenter知道如何和我們的站點通訊。

2、uc_client文件夾,是一個很重要的類庫,當然其實他不只是類庫,但是他最重要的作用就是給我們提供相應的同步方法,這些同步方法,都是用來通知ucenter server的(也可以認為就是調用ucenter的方法)。

3、config.inc.php這個配置文件,配置了我們需要的參數的,比如ucenter server的url等等,都是寫很重要的參數,在uc.php和uc_client中都會用到。

4、include沒有什么用,這里只是為了讓他不報錯,加入的。你可以改造uc.php后,將include目錄去除。 

 

以上就是我們整合ucenter時需要了解的地方。

接下來,我們說說ucenter applications之間的通知機制,就是我在uchome登錄,是如何通知到我的網站的,反之又是怎么樣的。

我們可以跟蹤一個最簡單的synlogin方法,就可以發現,最終該方法返回的是一段html代碼,並且是一個或多個script標簽的代碼(個數和你的application個數有關)。這個和同步又有什么關系呢?

其實他這里處理起來很簡單,就是利用html中的script標簽的src屬性,因為當在頁面中加入script的時候,起會作為一個get自動訪問指定的url,通過這種方式,就在用戶不知不覺得情況下,調用了需要調用的方法(REST),同時因為ucenter使用了pop3協議,讓其跨域設置cookie成為了可能。由此完成了同步目的,因為你同時設置了其他應用會用到的cookie。

這就是為什么,每次登錄uchome之類的,總會有個中間頁面,提示你三秒后會自動跳轉之類。因為頁面級的get訪問,可以要花時間的,如果我們用很快的速度點擊調轉的話,他沒有足夠的事件來完成script標簽中的響應的話,我們的同步可就不起作用了。

 

【提高部分】

有個中間頁面,總是覺得不太舒服。有沒有辦法不要這個中間頁面就直接點登錄,在后台完成相應的同步操作呢?答案是肯定的。

解決方案其實也很簡單,就是使用curl或get_files_content來獲取需要設置的cookie

大致的思路就是,在登錄執行的部分,我們額外地通過curl訪問,前面所說的script中的src所對應的url,將其需要設置的cookie取出來,整合到我們即將返回的Respones中。這樣,我們就可以實現目的了。其實這里,我們就是利用curl做了個橋的作用,然后整合下。

那么為什么ucenter不直接采用這個方式,還采用中間頁面的方式呢?

這個和ucenter支持的php版本有關,康盛支持php4.0,同時又要保證,不使用額外安裝的exitension。這里我們用到的curl是一個extension,get_files_content又是5.0才引入的。一切都明白了吧。都是為了兼容性。

 

最后,總結下,需要整合ucenter的話,我們一般要改三處地方,

1、  config.inc.php,提供基本參數,一定要准確無誤。

2、  uc.php,供別的application調用的同步代碼,需要將自己的相應登錄或登出等邏輯寫進去。

3、  站點自身的登錄或登出功能,在其中我們需要調用其他application的同步代碼,有兩種方式,中間頁和curl

 

根據這些原理分析,由於個application間的通信都是通過http和pop3協議的,所以,可以很好的跨平台,對於asp.net等其他的語言,只需要仿造php版本的邏輯寫個就行,只是要保證類似uc.aspx中的方法簽名一定要保證一樣,否則的話產生出來的operation什么可就對不上了。另外,在ucenter server出設置時,也不要設置成uc.php了。要設置成uc.aspx了。

在最后,說說大致的開發思路。

首先有個前提,這些文件都是在你站點的服務器上,並沒有在uc那邊。

在uc.php中,你最可能會需要改動的函數邏輯是synlogin和synlogout,你需要在這個文件寫,加入你自己站點的登錄,登出邏輯。

在自己的站點的登錄登出邏輯這里,記得要調用client.php中的方法,利用其返回的同步代碼,最后是模擬登錄呢還是中轉頁,你自己決定了,但是得要在你的邏輯中實現這個過程。改動了這這兩個就完成了雙向的登錄,登出。但是,要注意,你的登錄機制,否則cookie可能設置不上。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM