您的位置:首页 > 移动开发 > 微信开发

微信小程序获取用户简要信息

2018-03-21 14:32 651 查看
    因为项目的需要,研究了一下微信获取用户的简单信息,在过程中耗费了许多的时间,想发出来与大家一起分享学习,有大牛看到不足的地方也希望大家指教!
    小程序:var utils = require("utils/utils");
var BaseUrl = 'http://xcx.com/api/v1';
App({
onLaunch: function (event) {
//首先判断缓存UserInfo 如果不存在则表示用户信息没有收集
//UesrInfo{true Or false}
if (!wx.getStorageSync('uid'))
{
wx.login({
success: function (res)
{
var code = res.code;
var user ={};
//获取Users基本信息
wx.getUserInfo({
success: function (res) {
var userInfo = res.userInfo;
user.code = code
user.nickname = userInfo.nickName;
user.extend =[
gander => userInfo.gender,
city => userInfo.city
];
console.log(user);
if(code){
var url = BaseUrl+'/user'
//获取UsersOpenid并将数据发送至服务器
utils.http(url, function(res){
console.log(res.uid);
wx.setStorage({
key: 'uid',
data: res.uid,
});
},'POST',user);
}
}
});
}
});
}
}
})    获取code之后将用户信息发送到后台进行处理。
    微信后台API(TP5):
    controller
class User extends BaseController
{

public function saveInfo(){
//验证POST数据
(new UserInfoCheck())->goCheck();
$userInfo = input('post.');
$uid = UserModel::saveInfo($userInfo);
return $uid;
}

}    modelclass User extends BaseModel{

protected function setExtendAttr($value){
return serialize($value);
}

public static function saveInfo($userInfo){
//获取用户openid
$openID=self::getOpenID($userInfo['code']);
//检查数据库中是否有OpenID
$user= self::getOne($openID,'openid');
if(!empty($user)){
//数据库存在该openId
$uid = $user->id;
}else{
//数据库不存在该openid需要将其写入数据库
$res = self::create([
'openid' => $openID,
'nickname' =>$userInfo['nickName'],
'extend' =>$userInfo['extend']
]);
if(!$res){
throw new SystemException(['msg'=>'存储用户信息失败']);
}
$uid = $res -> id;
}

return ["uid"=>$uid];
}

private static function getOpenID($code){
$url = self::prepareGetOpenIDUrl($code);
$res = curl_get($url);
$res = json_decode($res,true);
if(!$res){
throw new SystemException(['msg'=>'获取openid失败']);
}
$openID = $res['openid'];
return $openID;
}

private static function prepareGetOpenIDUrl($code){
$app_id = config('wx.app_id');
$app_secert = config('wx.app_secert');
$url = sprintf(config('wx.login_url'),$app_id,$app_secert,$code);
return $url;
}

public static function getOne($value,$field = 'id'){
$user = self::where($field,'=',$value)->find();
return $user;
}
}    公共文件function curl_get($url,&$httpCode =0){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//不做证书验证 部署在linux 则改为true
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,10);
$file_content = curl_exec($ch);
$httpCode = curl_getinfo($ch,CURLINFO_HTTP_CODE);
curl_close($ch);
return $file_content;
}    这样就可以完成简单的用户信息获取啦!!。 
    效果展示:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  微信小程序 API