通过uc_client接口方式,更新discuz会员头像

来源:互联网 发布:全景漫游制作软件 编辑:程序博客网 时间:2024/05/22 15:10
背景:
由于对论坛UCenter做了会员同步,为了保持会员头像同步,在主站里调用头像的地方,改为论坛图像的引用方式,PC端可以使用剥离论坛flash上传的模式进行上传,但是APP却没有更新头像的功能,查看了下uc_client包里,上传头像onuploadavatar函数并没有写。

将主要代码记录如下:
//记得  require_once("uc_client/client.php");
$data['user_id'] = $_POST['user_id'];//需要修改头像的用户ID
$data['avatar1'] = $_POST['avatar1'];//图片内容字符串,图片宽、高小于200px
$data['avatar2'] = $_POST['avatar2'];//图片内容字符串,图片宽、高小于120px
$data['avatar3'] = $_POST['avatar3'];//图片内容字符串,图片宽、高小于48px
$_result = UpAvatar($data);
主要逻辑处理函数:
    /*
** 将需要上传的头像图片内容进行转码
*/
static public function replace_img_str($img){
if(!$img){
return '';
}

return strtoupper(bin2hex($img));
}

/*
* Author: 2016-5-30
* Descript:获取Ucenter头像上传地址
* Param:
* Return:array
*/
public function GetUcAvatarUpUrl($data){
$user_id = $data['user_id'];

//将本站user_id转为UCenter中对应的user_id
$resultuid = self::GetUserIdOne($user_id);
$uid = $resultuid['uc_user_id'];

//生成签名信息
$uc_input = uc_api_input("uid=$uid");
$agent=md5($_SERVER['HTTP_USER_AGENT']);

$url = UC_API.'/index.php?m=user&inajax=1&a=rectavatar&appid=2&input='.$uc_input.'&agent='.$agent.'&avatartype=virtual';

return $url;
}

/*
** 接口更新用户头像
*/
public function UpAvatar($data){
if($data['user_id']=='' || $data['avatar1']==''){
return '参数错误';
}
//用户上传头像提交地址
$_result['url'] = GetUcAvatarUpUrl($data);

$parameter = array();
$parameter['avatar1'] = replace_img_str($data['avatar1']);
$parameter['avatar2'] = replace_img_str($data['avatar2']);
$parameter['avatar3'] = replace_img_str($data['avatar3']);

//通过CURL方式POST操作
postCurlRequest($_result['url'], $parameter);

return $_result;
}



上传后的头像位于/bbs/uc_server/data/avatar/000/00/00/目录下,如果你操作后没有效果,可能是因为discuz对图片尺寸进行检查后被删除,可以注释 /bbs/uc_server/control/user.php中385 -387行代码后再操作看效果

file_exists($bigavatarfile) && unlink($bigavatarfile);
file_exists($middleavatarfile) && unlink($middleavatarfile);
file_exists($smallavatarfile) && unlink($smallavatarfile);

如果成功,则返回

<?xml version="1.0" ?><root><face success="1"/></root>

如果失败,则返回

<?xml version="1.0" ?><root><face success="0"/></root>


若返回

<root><message type="error" value="-1" /></root>

代码uid参数没传

<root><message type="error" value="-2" /></root>

3个头像参数有缺失


按以上方式整合入项目运行即可。
0 0
原创粉丝点击