使用qt完成 钉钉 登录,创建会话,发消息

使用qt完成 钉钉 登录,创建会话,发消息
void tradeday::ddnetim() //取tocken
{

QString id = "****";//appkey
QString 	secrect = "****";//appsecret
		QNetworkRequest req;
QString dd = "https://oapi.dingtalk.com/gettoken?appkey="+id+"&appsecret="+secrect;
	req.setUrl(QUrl(dd));
	QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(ddreplyFinished(QNetworkReply*)));
manager->get(req);

}

void tradeday::ddreplyFinished(QNetworkReply* reply)
{
QByteArray byteArray = reply->readAll();
QString tt = QString::fromLocal8Bit(byteArray);
QJsonParseError jsonError;
QJsonDocument doucment = QJsonDocument::fromJson(byteArray, &jsonError); // 转化为 JSON 文档
if (!doucment.isNull() && (jsonError.error == QJsonParseError::NoError)) { // 解析未发生错误
if (doucment.isObject()) { // JSON 文档为对象
QJsonObject object = doucment.object(); // 转化为对象
if (object.contains(“access_token”)) { //包含指定的 key
QJsonValue value = object.value(“access_token”); // 获取指定 key 对应的 value
if (value.isString()) { // 判断 value 是否为字符串
QString strName = value.toString(); // 将 value 转化为字符串
ui.cjmxtxtedit->append(“ddtoken is ok”);
ddtoken = strName; //获得tocken
ddtokentime = QDateTime::currentDateTime();
ddadmin();
}
}
if (object.contains(“admin_list”)) { //包含指定的 key
QJsonValue value = object.value(“admin_list”); // 获取指定 key 对应的 value

			if (value.isArray()) {  
				QJsonArray  arr = value.toArray();
				QJsonValue value1 = arr.at(0);
				if (value1.isObject()) {	
					QJsonObject obj = value1.toObject();
				
					if (obj.contains("userid"))
				{
					QJsonValue id = obj.value("userid");
					int mm = id.type();
					if (id.isString()) {  // 判断 value 是否为字符串
						QString strName = id.toString();
						ui.cjmxtxtedit->append(strName);
						adminid = strName;//获得admin id
						ddmsg(QDate::currentDate().toString("yyyy-MM-dd "));
					}
				}
				}
				
				
			}
		}
	}
}
reply->deleteLater();
reply = Q_NULLPTR;

}

void tradeday::ddadmin() //获取adminid
{
//

QNetworkRequest req;
QString dd = "https://oapi.dingtalk.com/user/get_admin?access_token="+ddtoken ;
req.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("Content-Type:application/json"));
req.setUrl(QUrl(dd));

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(ddreplyFinished(QNetworkReply*)));
manager->get(req);

}

void tradeday::createchat() //创建会话,注意在debug 状态下查看(ddreplyFinished())的返回会话id,或者重写ddreplyFinished()
{
QNetworkRequest req;
req.setRawHeader(“Content-Type”, “application/json”);
req.setUrl(QUrl(“https://oapi.dingtalk.com/chat/create?access_token=”+ddtoken));
QJsonObject obj;
obj.insert(“name”, “talk”);
obj.insert(“owner”, adminid);
QJsonArray jarr;
jarr.append(adminid);
obj.insert(“useridlist”, jarr);

QByteArray arr = QJsonDocument(obj).toJson();

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(ddreplyFinished(QNetworkReply*)));
manager->post(req, arr);

}

void tradeday::ddmsg(QString xx)
{
QTime nowtime = QTime::currentTime();
if (nowtime > QTime::fromString(“11:41:00”) && nowtime < QTime::fromString(“13:25:00”)) return;//中午停

QNetworkRequest req;
req.setRawHeader("Content-Type", "application/json");
req.setUrl(QUrl("https://oapi.dingtalk.com/chat/send?access_token=" + ddtoken));
QJsonObject obj;
obj.insert("chatid", "****f");
obj.insert("msgtype",  "text");
QJsonObject obj1;
obj1.insert("content", xx);
obj.insert("text", obj1);
QByteArray arr = QJsonDocument(obj).toJson();

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
//connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(ddreplyFinished(QNetworkReply*)));
manager->post(req, arr);
if (ddtokentime.secsTo( QDateTime::currentDateTime())>=6000) //刷新tocken
{
	QTimer::singleShot(0, this, SLOT(ddnetim()));
	//ui.cjmxtxtedit->append()
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值