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

背景:
由于对论坛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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值