php登录抓取网页指定内容(后台解密使用的是“auth.code2session”接口,解密用到下载地址 )
优采云 发布时间: 2021-10-24 18:13php登录抓取网页指定内容(后台解密使用的是“auth.code2session”接口,解密用到下载地址
)
第一张图
实施过程:
1、 授权登录按钮和文字信息放在同一个页面。未授权时显示登录按钮,授权时隐藏登录按钮,显示文字信息。当然,授权和文字可以分成两页。在授权页面的onload中,判断是否已经授权,如果授权则直接跳转到正文页面。这里只说授权按钮和文字在同一个页面的情况。
2、 在onload中,首先判断是否授权。如果已授权,则隐藏授权登录按钮并显示文本消息。如果没有授权,则显示授权登录按钮。
3、 前端使用按钮的open-type="getuserinfo"来操作。点击授权按钮后,“e”会携带userinfo,用户的基本信息(与使用wx.getuserinfo接口获取的数据相同,所以我直接在“e”中取,没有调用wx.getuserinfo接口)
4、使用wx.login接口获取登录凭证码,用密码解密换取openid,发送密码时,将步骤3获取的用户信息发送到后台解密(也可以不带,带的目的)是为了验证签名,所以比较安全,不用验证也可以验证)
5、后台解密使用“auth.code2session”接口,解密使用的SDK下载地址
“”。
5、 后台解密后(后台语言使用php),会返回openid等敏感信息,可以存储信息。
6、 授权成功后,隐藏授权登录按钮,显示短信。
7、 如果用户点击拒绝授权,会提示引导用户重新授权。
注意要考虑授权失败的情况
下面是详细代码
xml文件
申请获取以下权限
获得你的公开信息(昵称,头像等)
授权登录
请升级微信版本
我的首页内容
wxss
.header {
margin: 90rpx 0 90rpx 50rpx;
border-bottom: 1px solid #ccc;
text-align: center;
width: 650rpx;
height: 300rpx;
line-height: 450rpx;
}
.header image {
width: 200rpx;
height: 200rpx;
}
.content {
margin-left: 50rpx;
margin-bottom: 90rpx;
}
.content text {
display: block;
color: #9d9d9d;
margin-top: 40rpx;
}
.bottom {
border-radius: 80rpx;
margin: 70rpx 50rpx;
font-size: 35rpx;
}
js
// pages/test1/test1.js
var app = getapp();
page({
/**
* 页面的初始数据
*/
data: {
//判断小程序的api,回调,参数,组件等是否在当前版本可用。
caniuse: wx.caniuse('button.open-type.getuserinfo'),
ishide: false
},
/**
* 生命周期函数--*敏*感*词*页面加载
*/
onload: function (options) {
var that = this;
// 查看是否授权
wx.getsetting({
success: function (res) {
if (!res.authsetting['scope.userinfo']) {
// 还未授权,显示授权按钮
that.setdata({
ishide: true
});
} else {
// 已授权,隐藏授权按钮,显示正文
that.setdata({
ishide: false
});
}
}
})
},
//授权登陆按钮
bindgetuserinfo: function (e) {
var that = this;
console.log(e)
if (e.detail.userinfo) {
//用户授权登陆,并跳转首页
// that.getopenid()
wx.login({
success: function (res) {
// 请求自己后台获取用户openid
wx.request({
url: app.domain + 'teacherapi/wx_decode/wxdecode',
method: 'post',
header: { 'content-type': 'application/x-www-form-urlencoded' },
data: {
encrypteddata: e.detail.encrypteddata,
signature: e.detail.signature,
rawdata: e.detail.rawdata,
iv: e.detail.iv,
code: res.code
},
success: function (res_user) {
if (res_user.data.status == 0) {
var data = json.parse(res_user.data.msg) //json转对象
//授权成功返回的数据,根据自己需求操作
console.log(data)
//授权成功后,隐藏授权按钮,显示正文
that.setdata({
ishide: false
});
}
}, fail: function () {
that.showmodal('获取授权信息失败')
}
})
}
})
} else {
//用户按了拒绝授权按钮,提示引导授权
that.showmodal('请授权后使用小程序')
}
},
//未授权弹窗
showmodal: function (e) {
wx.showmodal({
title: '提示',
content: e,
showcancel: false,
confirmtext: '返回授权',
success: function (res) {
if (res.confirm) {
console.log('用户点击了“返回授权”')
}
}
})
},
})
php
<p>