微信重新授权变更头像PHP,小程序登录,用户登录后,在微信里变更昵称或头像后再次登录,系统并不更新相关信息。...

暂时修改添加了这个功能,思路大概是:

利用每次登录都记录loginip和logintime这段功能,把每次获取到的头像和昵称信息记录一下。

在小程序里,需要显示的部分,实际上都已经有新取得的数据了,直接显示就行了。

1. 在/addons/cms/controller/wzapp/User.php里的login()函数里添加'avatar' => $userInfo['avatarUrl'], 这个变量后面需要。$result = [

'openid' => $json['openid'],

'userinfo' => [

'nickname' => $userInfo['nickName'],

'city' => $userInfo['city'],

'avatar' => $userInfo['avatarUrl'], /// 后添加

],

'access_token' => $json['session_key'],

'refresh_token' => '',

'expires_in' => isset($json['expires_in']) ? $json['expires_in'] : 0,

];

2. 在/addons/third/library/Service.php里的第三方登录connect()函数里添加代码:public static function connect($platform, $params = [], $extend = [], $keeptime = 0)

{

$time = time();

$values = [

'platform' => $platform,

'openid' => $params['openid'],

'openname' => isset($params['userinfo']['nickname']) ? $params['userinfo']['nickname'] : '',

'access_token' => $params['access_token'],

'refresh_token' => $params['refresh_token'],

'expires_in' => $params['expires_in'],

'logintime' => $time,

'expiretime' => $time + $params['expires_in'],

];

$auth = \app\common\library\Auth::instance();

if ($params['userinfo']['nickname'] && $params['userinfo']['avatar']) { // 后添加部分

$user_nickname = $params['userinfo']['nickname'];

$user_avatarUrl = $params['userinfo']['avatar'];

} else {

$user_nickname = null;

$user_avatarUrl = null;

}

$auth->keeptime($keeptime);

$third = Third::get(['platform' => $platform, 'openid' => $params['openid']]);

if ($third) {

$user = User::get($third['user_id']);

if (!$user) {

return FALSE;

}

$third->save($values);

return $auth->direct($user->id, $user_nickname, $user_avatarUrl); 后2个参数为后添加

} else {

// 先随机一个用户名,随后再变更为u+数字id

3. 在/application/common/library/Auth.php里的direct()函数添加2个参数,然后在save()之前添加需要保存的头像和昵称信息:public function direct($user_id, $user_nickName, $user_avatarUrl) //添加后2个参数

{

$user = User::get($user_id);

if ($user)

{

同步到Ucenter

if (defined('UC_STATUS') && UC_STATUS)

{

$uc = new \addons\ucenter\library\client\Client();

$re = $uc->uc_user_login($this->user->id, $this->user->password . '#split#' . $this->user->salt, 3);

// 如果小于0则说明发生错误

if ($re <= 0)

{

$this->setError('Username or password is incorrect');

return FALSE;

}

}

$ip = request()->ip();

$time = time();

//判断连续登录和最大连续登录

if ($user->logintime < \fast\Date::unixtime('day'))

{

$user->successions = $user->logintime < \fast\Date::unixtime('day', -1) ? 1 : $user->successions + 1;

$user->maxsuccessions = max($user->successions, $user->maxsuccessions);

}

$user->prevtime = $user->logintime;

//记录本次登录的IP和时间 (后加了记录,也就是更新用户头像和昵称)

$user->loginip = $ip;

$user->logintime = $time;

if ($user_nickName && $user_avatarUrl && $user_nickName != null && $user_avatarUrl != null) { // 后加了这部分

$user->nickname = $user_nickName;

$user->avatar = $user_avatarUrl;

}

$user->save();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值