微信小程序获取用户简要信息
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;
} 这样就可以完成简单的用户信息获取啦!!。
效果展示:
小程序: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;
} 这样就可以完成简单的用户信息获取啦!!。
效果展示:
相关文章推荐
- 微信小程序维护登录态与获取用户信息
- 微信小程序 获取用户信息(包括openId等敏感信息)
- [转]wx.getUserInfo(OBJECT) 微信小程序 获取用户信息
- 微信小程序 获取用户信息(包括openId等敏感信息)
- 微信小程序 获取用户信息并保存登录状态
- 微信小程序开发之获取openid及用户信息
- Thinkphp5微信小程序获取用户信息接口调用笔记
- C#微信小程序服务端获取用户解密信息
- 微信小程序获取用户信息官方推荐方案
- 微信小程序授权获取用户详细信息openid的实例详解
- 微信小程序开发之获取openid及用户信息
- 微信小程序获取用户信息“授权失败”场景的处理
- 微信小程序判断用户是否需要再次授权获取个人信息
- 微信小程序如何获取用户信息
- Java微信开发(通过java程序获取用户个人信息)
- Thinkphp5微信小程序获取用户信息接口的实例详解
- C#微信小程序服务端获取用户解密信息
- 小程序使用wx.chooseAddress获取用户手机号码,微信chooseAddress接口获取收货信息
- java 微信小程序登录 验证登录并获取用户信息
- 微信小程序获取用户openid,头像昵称信息,后台java代码