ucenter整合碰到的問題

ucenter整合問題一般分兩種:通信失敗,通信成功但是通知失敗。

ucenter整合自己項目,下載ucenter,解壓,降advanced\examples 打開,將api放入根目錄,將advanced\下的uc_client放入根目錄,然後修改數據庫配置文件,將自己的項目寫上ucenter應用配置,開啓等操作,具體不再贅述,網上有豐富的教程。

一,通信失敗

1,首先,我們需要檢查我們的應用的配置,是否與我們需要整合的項目配置一致,這點非常重要,後面的解密需要一致纔可以解密

應用ip最好也要填上,不然怕有坑。

2,經過反反覆覆覈對後,發現配置沒有問題,那麼我們就來跟蹤代碼。開啓瀏覽器F12,打開ucenter後臺管理的應用管理。

我們根據請求鏈接跟蹤代碼可以找到 uc_server/control/admin/app.php

例如http://www.xxx.com/api/uc.php?code=6aafddyqTn3ncTEay98sUMbfhXKYCpa2B9T6B95DYR%2Bn%2BN4%2B9u%2BqvBMspInOnF9wveTV2F5QTRg

然後我們拿着這個url放入瀏覽器,看下我們項目的代碼爲何輸出不爲1,一般都是自己代碼的問題,反覆debug即可查出問題所在,輸出爲1就可以通信成功了。

二,通信成功通知失敗

一般通信成功不代表通知也成功,只有當通信成功與通知成功,才能算ucenter整合成功

爲什麼會產生通知失敗呢?通知失敗的產生一般是我們應用的登入登出註冊等操作,異步請求去告訴其它應用時候出現錯誤,或者壓根沒有調用請求去告訴,導致其他項目不知道該用戶進行了登入,所以同步登入登出失敗。

接下來我們以登陸舉例子:

這裏“uc_user_login” 會進入我們項目 uc_client/client.php ,接着會進入uc_client/control/user.php 調用裏面onlogin的方法,然後去uc_client/model/user.php 模型裏面拿 ucenter庫裏面的用戶表信息,然後返回的用戶信息進行我們項目自己的業務邏輯,最後去通知各個其它應用,告訴他們該用戶已經登錄了。

注意:

 這裏的apps.php由於是緩存,很有可能和ucenter服務端“uc_server/data/cache/apps.php” ,如服務端 $_CACHE['apps']有5個應用,但是我們項目$_CACHE['apps']只有1個,故這裏就不會繼續執行了。所以一定要檢查清楚,直接點的做法,將“uc_server/data/cache/apps.php”直接覆蓋各個應用的"UC_ROOT.'./data/cache/apps.php'"。

走到這段程序的最底層的一個方法

注意這裏:

 這個函數需要我們在php.ini裏面去掉禁用,和開啓,具體操作可以上網查找。

這裏的fsockopen會去調用ucenter服務端,ucenter_server/control/user.php生成鏈接:

走到這一步調試如果沒有問題基本上發送通知都可以成功發送了,我們再去登陸,接下來可以看到我們的站點登陸成功後:

 這兩個請求就是告訴另外兩個應用,該用戶已經登陸了。可能還會遇到這樣的情況,就是代碼跑下來,沒有任何問題,但是我們本地的項目就是不發起通知的請求,可嘗試這樣子修改代碼,修改方法uc_fopen的返回結果

這樣就可以請求了。整套跑下來,基本上發送通知是可以成功了,如果還是不可以的話,那基本是我們項目代碼有問題了,那麼我們就把發送通知的url複製下來,如上上圖http://www.xxx.com/api/uc.php?time=1533794347&code=0e22xFUQFRKxWHVpWLGEhX8jbr8x2oDLIoq79SbK7dYhxVWT5%2Fpc%2B2PhgHmBKWwRcoTlCU%2FWelzwM6NCE%2F%2FmmDxQoUefYA%2BPkSJX%2B3WQ2cWr36%2BpxgUAISE5b9iqfLLJvwDqGqI4JG8OQP7B3n97lPVrCRfjTdWpepzd

看下這個鏈接的返回結果有沒有報錯,跟蹤這個url的代碼,然後查看該項目是如何判斷用戶是否登錄的,因爲我試過,用第三方開源去套ucenter,調試半天后才發現,原來已經通知成功,而且本地是有session用戶信息了,但是怎麼都不顯示登錄,原因就是自己的代碼用cookie登錄,沒有用session,所以自身的代碼邏輯也是非常重要的。

通知的url會來到項目的api/uc.php

 經過上面一系列反反覆覆推敲,已經完成了通信成功與通知成功,好好體驗ucenter帶來的便捷吧~

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章