php微信小程序获取用户信息,微信小程序调用接口获取登录获取用户信息

format,png

微信小程序getPhoneNumber获取手机号的功能需要需先调用wx.login接口,今天就来一篇wx.login接口和wx.getUserInfo接口的文章,这两个接口通常在小程序中还是十分常用的。

wx.login

调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key)等。用户数据的加解密通讯需要依赖会话密钥完成。

注:调用 login 会引起登录态的刷新,之前的 sessionKey 可能会失效。

小程序端代码:

没什么说的,直接调用就行了,重点是PHP代码

//app.js

App({

onLaunch: function() {

this.getOpenId()

},

//获取openid

getOpenId: function (cb) {

var that = this

if (this.globalData.openid) {

typeof cb == "function" && cb(this.globalData.openid)

} else {

wx.login({

success: function (res) {

// console.log(res.code);//(1)如果登录成功打印code值

if (res.code) {

//发起网络请求

wx.request({

url: 'https://api.qq52o.me/Api/openid',

data: {

code: res.code//将code值传入php中

},

success: function (result) {

console.log(result);//传入成功code值返回过来

var res = result.data

that.globalData.openid = res.openid

that.globalData.session_key = res.session_key

typeof cb == "function" && cb(that.globalData.openid);

typeof cb == "function" && cb(that.globalData.session_key);

}

})

} else {

conso1e.log('获取用户登录态失败!' + res.errMsg)

}

}

});

}

},

})

PHP代码:code 换取 session_key

​这是一个 HTTPS 接口,开发者服务器使用登录凭证 code获取 session_key 和 openid。

public function openid(){

$code= $_REQUEST['code'];

// 需要修改APPID和SECRET

$url="https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=$code&grant_type=authorization_code";

function getcurl ($url){

$ch = curl_init();

curl_setopt ($ch,CURLOPT_URL,$url);

curl_setopt ($ch,CURLOPT_RETURNTRANSFER,1);

curl_setopt ($ch,CURLOPT_TIMEOUT,30);

$content=curl_exec($ch);

$status=(int)curl_getinfo($ch,CURLINFO_HTTP_CODE );

if( $status==404)

{

return "";

}

curl_close($ch) ;

return $content;

}

//code换取openid

$res= getcurl($url);

print_r($res);

}

请求参数:

参数

必填

说明

appid

小程序唯一标识

secret

小程序的 app secret

js_code

登录时获取的 code 此代码中为$code 无需更改

grant_type

填写为 authorization_code

完成以上步骤,就相当于完成了微信的授权登陆,调用wx.login接口成功。接着,完成授权以后,通常的小程序都有一个我的页面,需要显示用户的头像以及微信名等,下面介绍wx.getUserInfo获取用户信息接口。

wx.getUserInfo

获取用户信息,withCredentials 为 true 时需要先调用 wx.login 接口,需要用户授权 scope.userInfo。

此处的用户授权,即为需要获取用户授权同意后才能调用,如果拒绝则调用失败。

如果用户未接受或拒绝过此权限,会弹窗询问用户,用户点击同意后方可调用接口;

如果用户已授权,可以直接调用接口;

如果用户已拒绝授权,则短期内不会出现弹窗,而是直接进入接口 fail 回调。请开发者兼容用户拒绝授权的场景。

//app.js

getUserInfo: function (cb) {

var that = this

if (this.globalData.userInfo) {

typeof cb == "function" && cb(this.globalData.userInfo)

} else {

//调用登录接口

wx.login({

success: function () {

wx.getUserInfo({

success: function (res) {

var userInfo = res.userInfo

that.globalData.userInfo = res.userInfo;

typeof cb == "function" && cb(that.globalData.userInfo);

}

})

}

})

}

},

很简单的调用用户信息就完成了,声明全局变量即可。

userInfo参数说明:

解密后为以下 json 结构

{

"openId": "OPENID", //用户的openid

"nickName": "NICKNAME", //用户昵称

"gender": GENDER, //用户的性别,值为1时是男性,值为2时是女性,值为0时是未知

"city": "CITY", //用户所在城市

"province": "PROVINCE", //用户所在省份

"country": "COUNTRY", //用户所在国家

"avatarUrl": "AVATARURL", //用户头像

"unionId": "UNIONID",

"watermark":

{

"appid":"APPID", //小程序的appid

"timestamp":TIMESTAMP //时间戳

}

}

如果有什么问题可以留言,或者加我好友联系。

任何个人或团体,未经允许禁止转载本文:《微信小程序调用接口获取登录获取用户信息》,谢谢合作!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值