ucenter整合碰到的问题

ucenter整合问题一般分两种:通信失败,通信成功但是通知失败。

ucenter整合自己项目,下载ucenter,解压,降advanced\examples 打开,将api放入根目录,将advanced\下的uc_client放入根目录,然后修改数据库配置文件,将自己的项目写上ucenter应用配置,开启等操作,具体不再赘述,网上有丰富的教程。

一,通信失败

ucenter整合碰到的问题_第1张图片

1,首先,我们需要检查我们的应用的配置,是否与我们需要整合的项目配置一致,这点非常重要,后面的解密需要一致才可以解密ucenter整合碰到的问题_第2张图片

ucenter整合碰到的问题_第3张图片应用ip最好也要填上,不然怕有坑。

2,经过反反复复核对后,发现配置没有问题,那么我们就来跟踪代码。开启浏览器F12,打开ucenter后台管理的应用管理。

ucenter整合碰到的问题_第4张图片

我们根据请求链接跟踪代码可以找到 uc_server/control/admin/app.php

ucenter整合碰到的问题_第5张图片

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

然后我们拿着这个url放入浏览器,看下我们项目的代码为何输出不为1,一般都是自己代码的问题,反复debug即可查出问题所在,输出为1就可以通信成功了。

二,通信成功通知失败

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

ucenter整合碰到的问题_第6张图片

为什么会产生通知失败呢?通知失败的产生一般是我们应用的登入登出注册等操作,异步请求去告诉其它应用时候出现错误,或者压根没有调用请求去告诉,导致其他项目不知道该用户进行了登入,所以同步登入登出失败。

接下来我们以登陆举例子:

ucenter整合碰到的问题_第7张图片

ucenter整合碰到的问题_第8张图片

这里“uc_user_login” 会进入我们项目 uc_client/client.php ,接着会进入uc_client/control/user.php 调用里面onlogin的方法,然后去uc_client/model/user.php 模型里面拿 ucenter库里面的用户表信息,然后返回的用户信息进行我们项目自己的业务逻辑,最后去通知各个其它应用,告诉他们该用户已经登录了。

ucenter整合碰到的问题_第9张图片

注意:

ucenter整合碰到的问题_第10张图片

 这里的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'"。

走到这段程序的最底层的一个方法

ucenter整合碰到的问题_第11张图片

注意这里:

ucenter整合碰到的问题_第12张图片

 这个函数需要我们在php.ini里面去掉禁用,和开启,具体操作可以上网查找。

这里的fsockopen会去调用ucenter服务端,ucenter_server/control/user.php生成链接:

ucenter整合碰到的问题_第13张图片

走到这一步调试如果没有问题基本上发送通知都可以成功发送了,我们再去登陆,接下来可以看到我们的站点登陆成功后:

ucenter整合碰到的问题_第14张图片 这两个请求就是告诉另外两个应用,该用户已经登陆了。可能还会遇到这样的情况,就是代码跑下来,没有任何问题,但是我们本地的项目就是不发起通知的请求,可尝试这样子修改代码,修改方法uc_fopen的返回结果ucenter整合碰到的问题_第15张图片

这样就可以请求了。整套跑下来,基本上发送通知是可以成功了,如果还是不可以的话,那基本是我们项目代码有问题了,那么我们就把发送通知的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整合碰到的问题_第16张图片 经过上面一系列反反复复推敲,已经完成了通信成功与通知成功,好好体验ucenter带来的便捷吧~

 

你可能感兴趣的:(php)