jscode2session php,小程序使用wx.login与auth.code2Session获得openid的方法详解

微信小程序获得用户头像等信息

首先:使用wx.login成功后会返回一个json,

成功时如:{errMsg: "login:ok", code: "0611rxBI0WFaRd2q0YCI0lnLBI01rxBB"}

接着:获得这个code后就可以使用auth.code2Session获得用户唯一凭证诸如openid。openid具有唯一性,每一个微信对应一个小程序只有其唯一的一个,更换手机也不会变。

9249e2e52f0c22b4fa3107efeae128f4.png

需要注意的是上面的code只能够使用一次,多次使用就会提示“code been used”

1b3b5acacc5b681801a7a87e8b977cfe.png

当然,每一次使用wx.login成功时code是不一样的,通过wx.request将这个code发送到服务端,服务端程序通过GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code得到openid

在小程序中代码:// 登录S

wx.login({

success(res) {

if (res.code) {

//登陆成功并成功返回code便发起网络请求获得OPENID

wx.request({

url: 'test.php',

data: {//将res.code发送到服务端test.php

code: res.code

},

success: function(res){

wx.setStorage({//将得到的openid存储到缓存里面方便后面调用

key:"openid",

data:res.data.openid

})

}

})

}else{

console.log('登录失败!'+res.errMsg);

}}})

//登陆E

test.php中主要代码为function geturl($url){//geturl函数

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec($ch);

curl_close($ch);

return $output;

}

$appid="wx5df8***";

$secret="dd126***";//小程序appid与secret配置

if(isset($_GET["code"])&&$_GET["code"]<>""){

$js_code=$_GET["code"];

}else{

die("ERROR");

}//获得js_code

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

$tmpstr=geturl($url);

echo $tmpstr;//输出数据以供小程序端获得

以上便是我对wx.login的使用。至于wx.login放在哪里,个人觉得放在app.js中的onLaunch中,这样在小程序启动时就可以获得openid并存储,方便后面页面的调用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值