网页手机号抓取程序(零基础小程序登录接口完成后取和session_和openid )

优采云 发布时间: 2021-11-07 16:13

  网页手机号抓取程序(零基础小程序登录接口完成后取和session_和openid

)

  零基础,当我第一次接触小程序并写出这个功能时,我的心理活动是

  

  好开始写作

  为了方便大家解释,我找了一张图给大家:

  

  第一步:我们先看上面的说明(获取登录凭证码)

  此代码代码是使用小程序的登录界面后获得的。这个wx.request()请求就是把code发送给后端,后端用code交换session_key和openid。

   wx.login({

success: function (res) {

if (res.code) { //使用小程序登录接口完成后端用户登录

wx.request({

url: app.d.hostUrl + 'getOpenid',//你自己api接口的路径

data: {

code: res.code,

appid: "你的小程序AppID",

secret: "你的小程序secret",

},

success: function (res) {

//把openid保存到缓存里

wx.setStorageSync("openid", res.openid);

wx.setStorageSync("session_key", res.session_key);

}

})

} else {

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

}

}

});

  前端已经把获取openid和session_key所需的参数传递给了后端。后端怎么写,嘻嘻,这样写:

  //用code换session_key和openid

public function getOpenid(){

global $_GPC;//这是微擎框架 $_GPC想当于$_GET和$_POST

$code = $_GPC['code'];

$appid = $_GPC['appid'];

$secret = $_GPC['secret'];

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

$str = $this->httpGet($api);

return $str;

}

private function httpGet($url){

$curl = curl_init();

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl, CURLOPT_TIMEOUT, 500);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);

curl_setopt($curl, CURLOPT_URL, $url);

$res = curl_exec($curl);

curl_close($curl);

return $res;

}

  这样前端成功就可以拿到openid和session_key了。现在,我们需要在后端使用 session_key 和 openid 来解密手机号码。

  第二步:我们来写一个解密手机号码的接口。看说明书。我们现在要编写 getPhoneNumber。我们稍后会在迷你终端上调用它。看代码之前先给大家看一下官方文档。

  链接:开放数据验证与解密

  向下滚动,点击下载解压,长度是这样的

  

  

  

  然后,看demo,把里面的固定参数换成我们自己的,为了简化这段代码,我完全复制了,顺序没变:

  public function getPhoneNumber(){

//这是解密手机号码的接口,等会前端还要写个请求访问这个接口拿到手机号码

global $_GPC;

require_once dirname(__FILE__) . '/mail/WXBizDataCrypt.php';

$appid = $_GPC['appid'];

$sessionKey = $_GPC['session_key'];

$encryptedData = $_GPC['encryptedData'];

$iv = $_GPC['iv'];

$pc = new WXBizDataCrypt($appid, $sessionKey);

$errCode = $pc->decryptData($encryptedData, $iv, $data );

if ($errCode == 0) {

print($data . "\n");

} else {

print($errCode . "\n");

}

}

  然后根据你的项目路径修改wxBizDataCrypt.php和errorCode.php的路径。1:更改此界面中wxBizDataCrypt.php的路径。2:将errorCode.php的路径改为wxBizDataCrypt.php文件。

  第三步:写完这个接口,我们来看看上面的手册。我们要开始打电话了。调用这个接口也是在写请求。这个接口需要什么?看看里面。它需要 appid、session_key、encryptedData 和 iv。

  那么现在(wmxl)有没有按钮触发,点击那个按钮获取手机号(我想写的很详细)

   使用微信登录

  最后得到手机号码。

  getPhoneNumber:function (e) {

var detail = e.detail;

wx.request({

url: app.d.hostUrl + 'getPhoneNumber', //解密手机号码接口

data: {

"appid": app.d.appId,

"session_key": wx.getStorageSync('session_key'),

"encryptedData": detail.encryptedData,

"iv": detail.iv

},

success: function (res) {

console.log(res.data.phoneNumber);

wx.setStorageSync("phonenumber", res.data.phoneNumber);

}

})

},

  有什么不对的欢迎指正。

  这时,一位热心网友离开现场,给你买橘子。

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线