Qt 连接管理微信小程序云数据库一(获取微信后台接口调用凭据ACCESS_TOKEN)

 

腾讯微信小程序开发文档中对获取小程序全局唯一后台接口调用凭据(access_token)的描述为

请求地址

GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

请求参数

属性类型默认值必填说明
grant_typestring 填写 client_credential
appidstring 小程序唯一凭证,即 AppID,可在「微信公众平台 - 设置 - 开发设置」页中获得。(需要已经成为开发者,且帐号没有异常状态)
secretstring 小程序唯一凭证密钥,即 AppSecret,获取方式同 appid

返回的 JSON 数据包

属性类型说明
access_tokenstring获取到的凭证
expires_innumber凭证有效时间,单位:秒。目前是7200秒之内的值。
errcodenumber错误码
errmsgstring错误信息

因为需要http访问,我们使用QNetworkAccessManager完成访问数据操作的控制。

void NetDataConnect::initial(){
    manager = new QNetworkAccessManager(this);
    request = new QNetworkRequest();
    getAccess_token();
    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(getAccess_token()));
    timer->start(Access_Token_expries);
}

返回数据expires_in代表该access_token有效时间,因此设置了一个计时器QTimer,有效期到时自动重新获取最新access_token。

void NetDataConnect::getAccess_token(){
    request->setUrl(QUrl(tr("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%1&secret=%2").arg(appid,secret)));
    request->setHeader(QNetworkRequest::ContentTypeHeader,"application/json; encoding=utf-8");
    reply = manager->get(*request);
    connect(reply,SIGNAL(readyRead()),this,SLOT(slotGetAccess_token()));
}

void NetDataConnect::slotGetAccess_token(){
    QByteArray ba = reply->readAll();
    QJsonDocument js = QJsonDocument::fromJson(ba);
    Access_Token = js["access_token"].toString();
    Access_Token_expries = js["expires_in"].toInt()-200;
    timer->setInterval(Access_Token_expries*1000);
}

QString NetDataConnect::getAccess_Token(){
    return Access_Token;//返回获取到的Access_Token值
}

其中appid,secret参数为小程序AppID,AppSecret,可在「微信公众平台 - 设置 - 开发设置」页中获得。(需要已经成为开发者,且帐号没有异常状态)

QNetworkRequest设置网络请求的URL,Header参数等信息。

QNetworkReply 是QNetworkAccessManager根据提交的QNetworkRequest构造的应答对象,通过它可以获知网络操作中的各种状态。当QNetworkReply发出readyRead()信号后,获取应答对象中的数据。

由于小程序的云数据库中数据为JSON数据包,因此使用QJsonDocument来对获取的数据进行处理,Qt 中对JSON数据提供包括QJsonDocument、QJsonObject、QJsonArray、QJsonValue等模块对数据进行处理,具体的模块功能可参考Qt开发文档。

下一篇文章我们介绍通过QNetworkAccessManager的post发送JSON数据包进行数据库筛选操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵喵叫的猴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值