Discuz教程网

[二次开发] Discuz开发资料之Ucenter整合网站同步登陆

[复制链接]
authicon dly 发表于 2015-2-27 19:35:48 | 显示全部楼层 |阅读模式
这几天一直在弄 Ucenter 同步登陆的问题,才仔细发现,其实同步登陆就是远程执行了 js脚本。。。

string uc_user_synlogout()
string uc_user_synlogin(integer uid)

返回的类型都是字符串,所以返回的字符串一定要在 网页中输出 才可同步。最好网页在进行延时。

还有一个问题就是 同步登陆的cookie有效期。在ucenter1.6版本里面 uc_user_synlogin()方法已经扩展了几个字段。
  1. function uc_user_synlogin($uid, $cookietime = 0, $weiboToken = '', $qqToken = '', $qqOpenid = '') {
  2. $uid = intval($uid);
  3. if (@include UC_ROOT . './data/cache/apps.php') {
  4. if (count($_CACHE['apps']) > 1) {
  5. $return = uc_api_post('user', 'synlogin', array('uid' => $uid, 'cookietime' => $cookietime, 'weibo_token' => $weiboToken, 'qq_token' => $qqToken, 'qq_openid' => $qqOpenid));
  6. } else {
  7. $return = '';
  8. }
  9. }
  10. return $return;
  11. }
复制代码
可以看出,第二个参数是有效期。传了第二个参数没有用,还需要修改 ucenter/control/user.php 里面的 onsynlogin() 方法
$this->init_input();
修改为
$this->init_input();
$cookietime = $this->input(‘cookietime’);
还有一个地方

$synstr .= ‘<script type=”text/javascript” src=”‘.$app['url'].’/api/’.$app['apifilename'].’?time=’.$this->time.’&code=’.urlencode($this->authcode(‘action=synlogin&username=’.$this->user['username'].’&uid=’.$this->user['uid'].’&password=’.$this->user['password'].”&time=”.$this->time, ‘ENCODE’, $app['authkey'])).’” reload=”1″></script>’;
修改为
$synstr .= ‘<script type=”text/javascript” src=”‘.$app['url'].’/api/’.$app['apifilename'].’?time=’.$this->time.’&code=’.urlencode($this->authcode(‘cookietime=’.$cookietime.’&action=synlogin&username=’.$this->user['username'].’&uid=’.$this->user['uid'].’&password=’.$this->user['password'].”&time=”.$this->time, ‘ENCODE’, $app['authkey'])).’” reload=”1″></script>’;
这样就可以能有 cookie有效期了,discuz本来是默认的
$cookietime = 31536000;







上一篇:Discuz开发资料之install.sql注释版
下一篇:放下与信念
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 01:18

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表