微信小程序如何獲取用戶的open_id、昵稱和頭像
1.通過wx. getUserProfile
這種方式需要用戶點(diǎn)擊同意,并且最新的更新
基礎(chǔ)庫2.27.1以上已經(jīng)無法獲取到用戶的頭像和昵稱,
返回的頭像是灰色頭像,昵稱是 “微信用戶”。
既然已經(jīng)獲取不到用戶昵稱和頭像這個(gè)方法感覺沒有用了
2.通過wx.login() 去獲得code 再用code 獲取 open_id
這樣可以達(dá)到靜默登入錄的效果:代碼如下
wx.login({
success: function (res) {
if (res.code) {
console.log(res)
_this._post_form('user/login', {
code: res.code,
user_info: '',
referee_id: wx.getStorageSync('referee_id')
}, result => {
// 記錄token user_id
wx.setStorageSync('token', result.data.token);
wx.setStorageSync('user_id', result.data.user_id);
}, false, () => {
// wx.hideLoading();
});
} else {
console.log('獲取code失??!')
}
},
})
后臺(tái)通過code 獲取到open_id
/**獲取open_id */
public function weixin_login($code) {
$ret['code'] = 200;
$app_id = 'xxxxxxxxxxxxx';
$app_secret = 'xxxxxxxxxxxxxxxxxxx';
//server調(diào)用微信提供的jsoncode2session接口獲取openid, session_key
$url = "https://api.weixin.qq.com/sns/jscode2session";
$params = array(
'appid' => $app_id,
'secret' => $app_secret,
'js_code' => $code,
'grant_type' => 'authorization_code'
);
$res = makeRequest($url, $params);
if ($res['code'] !== 200 || !isset($res['result']) || !isset($res['result'])) {
$ret['code'] = 500;
$ret['msg'] = '調(diào)用jsoncode2session失敗';
$ret['error'] = $res;
$this->response($ret,C('API_TYPE'));
}
$reqData = json_decode($res['result'], true);
if (!isset($reqData['session_key'])) {
$ret['code'] = 500;
$ret['msg'] = '獲得session_key失敗';
$ret['error'] = $reqData;
}else{
$ret['msg'] = '獲得成功';
$ret['open_id']=$reqData['openid'];
}
return $ret;
}
3.獲取用戶昵稱和頭像,這里用的是最新的用戶填寫功能,記得發(fā)送到后臺(tái)的圖片要保存到本地地址,記錄本地的圖片地址
真機(jī) 調(diào)試下會(huì)彈出選擇頭像和昵稱
獲取頭像 只需要 button 加上open-type="chooseAvatar"
<label class="avatar-lable">
<view class="title">
選擇頭像
</view>
<button class="avatar-box" open-type="chooseAvatar" bindchooseavatar="onChooseAvatar">
<image class="avatar" src="{{avatarUrl}}"></image>
</button>
</label>
昵稱只需要input type="nickname"
如沒特殊注明,文章均為方維網(wǎng)絡(luò)原創(chuàng),轉(zhuǎn)載請注明來自http://m.oulysa.com/news/6774.html