2KB项目,专业的源码交易网站 帮助 收藏 每日签到

ucenter与第三方程序整合小结

  • 时间:2019-08-11 20:35 编辑:2KB.COM 来源:2KB项目 阅读:720
  • 扫一扫,手机访问
  • 分享
摘要:一、在ucenter里注册第三方网站实用,调试通信成功(细节不表);二、实现注册同步1.找到第三方网站的注册函数;用uc_get_user()验证是否用户已在注册;(1)未注册:继续本地验证,继续第2点;(2)已注册:检测本地用户是否注册;[1]

一、在ucenter里注册第三方网站实用,调试通信成功(细节不表);


二、实现注册同步

1.找到第三方网站的注册函数;用uc_get_user()验证是否用户已在注册;


(1)未注册:继续本地验证,继续第2点;


(2)已注册:检测本地用户是否注册;


[1] 已注册:提示该用户名已注册过,不允许注册;


[2] 未注册:提示该用户已注册,但未本地激活;弹出激活页面;


2.继续本地用户验证(假设成功),把用户未加密的密码用新变量保存(注册ucenter需要原始密码以保证ucenter的其它应用使用);


3.先执行ucenter注册uc_user_register;检测返回结果是否成功;


4.ucenter注册成功;获得uc_id


5.修改本地用户注表,增加一个uc_id字段以保存注册成功返回的uc_id,实现用户的信息的关联(当然也可以用原有用户表id跟uc_id关 联,discuz就是这样处理的本地用户id)


6.把用户信息添加到本地数据库;记得保存uc_id;


三、实现第三方网站登录,同步其他应用也登录


1.找到第三方网站登录代码块,先采用uc_user_login登录密码验证,


2.验证成功用获得的uid跟本地的会员表id关联,查出相应信息,再发送相应本地用户cookie;


3.执行uc_user_synlogin($id);执行同步登录


四、实现共他应用登录,第三方网站也同步登录;


1.找到第三方网站正常登录后所要执行的cookie登录操作代码;


2.找到第三方网站的接口:uc.php;找到synlogin 代码块,参照上一点的代码修改原接口康盛的cookie操作代码;      


五、实现其他应用登出,第三方网站也同步登出


登出跟登录的修改要点刚好相反;把原在uc.php的synlogin 注册的cookie操作执行注销就OK


六、实现第三方网站退出,其他实用也退出;


    找到第三方网站的退出代码块,执行 uc_user_synlogout();


七、用户信息修改;


    找到第三方网站的用户修改资料代码块,缓存用户的密码(未经过加密的);在允行执行修改时先执行uc_user_edit;再执行本地用户资料修改


Ucenter与Discuz相关

1、用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证。


2、如果验证成功,将调用位于uc_client下client.php文件中的函数uc_user_synlogin,在这个函数中调用 uc_api_post(‘user’, ‘synlogin’, array(‘uid’=>$uid))。


3、然后这个函数后向Ucenter的index.php传递数据,index.php接受传递的数据,获得model为user,action为synlogin的值。


4、然后Ucenter的index.php调用control目录下的user.php类中的onsynlogin方法,通过foreach循环,以javascript的方式通知uc应用列表中开启同步登陆的应用进行同步登录;即通过get方式传递给各个应用目录中api下的uc.php一些数据。


5、uc.php接收通知并处理get过来的数据,并在函数synlogin(位于uc.php中)通过函数_authcode加密数据(默认以UC_KEY作为密钥),用函数_setcookie设置cookie。


6、各个应用用对应的密钥解码上面设置的cookie,得到用户id等数据;通过这个值来判断用户是否经过其它应用登录过,从而让用户可以自动登陆。


应用程序的logging.php ——>uc_client中的client.php——>Ucenter——>应用程序中api/uc.php


其实Ucenter实现同步登陆的原理就是cookie,一个应用登陆成功之后,向Ucenter传递数据,让Ucenter通知其他的应用也设置cookie,这样用户在访问其他应用的时候通过已经设置好的cookie实现自动登陆。了解了Ucenter的同步原理,再遇到无法同步登陆,或者开发一些与UCenter接口的时候就会容易很多。具体代码如下:

11.jpg


关于跨域登陆


1.页面嵌套 JS 跨域请求, 就像康盛的 UCenter 产品一样;


2.让页面依次跳转不同应用的域名来解决跨域问题;


3.Google 一样的, 用户主动请求;


下面是详细:

1. app1, app2, app3 挂接在 UC 上, 用户请求 app1 登录, app1 程序在验证通过同时请求 UC 需要同步登录的代码(如下), 打印到页面上.


<script type="text/javascript" src="http://app2/api/uc.php?time=132
4695020&code=f97bp%2FyiCrfFF%2B4lIndT1k3PoVk5%2BmVvNJMYiBzq7ssWE8FS
smj7T3jujWyDpKpT2t8vO7o5M19FlzvNdihXMDWqvyoko9C3lkpG%2BQX57zL112gb
GH%2FPwS9YD9A3%2BQVKNFSDzriFOqq9IFWJx6q4x%2Fk%2FMAltJygTiwRZ" reload="1"></script>

<script type="text/javascript" src="http://app3/api/uc.php?time=1324695020&code=2b55qIaEphMxdvEYZJok8GEoDW%2BctvZeWS84LvaH8MHf8AzrRXiLD
ZFIvS4cmUkXAGGeDnSVQ9rsu62iDnSAUSTEdSH2%2Bup5xZFvtgl9KRMEcOLLySih2w
vNL%2BSjRQgqErT5kEK0878zxlhRQn0ypgxXgmoCY3zE87sy" reload="1"></script>

注意的是, uc.php 需要 p3p header

header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');


2.app1, app2, app3, 用户请求 app1 登录, app1 程序在验证通过的时候让带着参数让浏览器跳到 app2.com (在输出页面的时候加上一段js, 代码类似下面), 然后再跳到 app3.com ... 依次种上 cookie 最后跳回 app1.com


<script type="text/javascript" reload="1">window.location.href=\'app1.com
/loginAuth.phpcode=ctvZeWS84LvaH8MHf8AzrRXiLDZFIvS4cmUkXAGGeDnSVQ9rsu62iDnSAUSTEdSH2%2Bup5xZFvtgl9KRMEcOLLySih2wvNL%2BSjRQgqErT5kEK0878zxlhRQn0yp
gxXgmoCY3zE87s'\';</script>

坏处是 - 在用户看起来, 页面会有好一会儿的白屏! 不适合多个应用.


3.Google 的方法, 坏处是用户得主动的点击登录按钮, 没法做到无缝的同步登录, 好处是适合多个应用;

哪一个好, 得看什么要求, 如果不需要做到无缝的同步登录的话, 肯定是使用 Google 的方案!





2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部