企业微信分享是在应用下的,所以要先创建一个企业微信的应用,这个应用相当于微信上的公众号
秘钥需要在企业微信管理员手机企业微信中才能查看到
网页授权功能域名是跟用户登录相关的,js-sdk域名是跟网页js功能相关的,比如 分享、获取当前企业微信用户上下文等
在企业微信管理后台下我的企业中可以查看到企业的企业id
企业微信开发有多种秘钥,一种是企业微信的秘钥,相当于是整个企业的秘钥,一种是应用的秘钥
请求:
https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=企业微信id&corpsecret=企业微信秘钥
响应:
{
"errcode": 0,
"errmsg": "ok",
"access_token": "企业微信秘钥",
"expires_in": 7200
}
请求:
https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=企业微信的access_token
响应:
{
"errcode": 0,
"errmsg": "ok",
"ticket": "企业微信的js-api-ticket",
"expires_in": 7200
}
请求:
https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=企业id&corpsecret=应用秘钥
响应:
{
"errcode": 0,
"errmsg": "ok",
"access_token": "应用access_token",
"expires_in": 7200 // 有效期两小时,不能频繁调用,需要将这个秘钥存起来
}
需要注意的是,需要先在应用中配置企业可信IP才能调用企业微信api接口,不然的话可能会出现IP异常调用错误的问题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FxOnSaGy-1690192878025)(C:\Users\m1877\AppData\Roaming\Typora\typora-user-images\image-20230724151827113.png)]
请求
https://qyapi.weixin.qq.com/cgi-bin/ticket/get?access_token=上面接口获取的的应用access_tokentype=agent_config
响应:
{
"errcode": 0,
"errmsg": "ok",
"ticket": "应用的js-ticket",
"expires_in": 7200
}
$.ajax({
type: "GET",
url: "https://baidu.com/qywx/get_js_sign",
data: "",
success: function (result) {
result = JSON.parse(result);
init_wx_config(result);
},
});
// 初始化微信h5环境
function init_wx_config(data) {
wx.config({
beta: true,
appId: data.corpid, // 必填,企业微信的corpID
timestamp: data.timestamp, // 必填,生成签名的时间戳
nonceStr: data.noncestr, // 必填,生成签名的随机串
signature: data.sign, // 必填,签名,见 附录-JS-SDK使用权限签名算法
jsApiList: ["agentConfig"], // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
});
wx.ready(function (err) {
console.log("微信sdk基础环境初始化成功");
wxReady(data);
});
}
// 注册应用功能权限
function wxReady(config) {
console.log("执行企业微信初始化操作!", config);
a = [];
wx.agentConfig({
beta: true,
corpid: "企业id", // 必填,企业微信的corpid,必须与当前登录的企业一致
agentid: 1000003, // 必填,企业微信的应用id (e.g. 1000247)
timestamp: config.timestamp, // 必填,生成签名的时间戳
nonceStr: config.noncestr, // 必填,生成签名的随机串
signature: config.agent_sign, // 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: [
// 所有用到的企微方法,都需要在这里注入权限,否则会无法调用
"openUserProfile", // 打开用户信息
"openEnterpriseChat", // 创建会话
"openExistedChatWithMsg", // 打开会话并发送消息
"updateEnterpriseChat", // 更新会话信息,修改群成员
"selectExternalContact", // 选择外部联系人
"getContext", // 获取群内容
"getCurExternalChat", // 获取群id
"sendChatMessage", // 给当前群发送消息
"shareToExternalContact", // 分享给外部联系人
"shareToExternalChat", // 分享内容到外部群
"getCurExternalContact",
"onMenuShareAppMessage", // 分享给联系人
],
success: function (res) {
console.log("企微应用功能权限注册成功");
// 分享功能配置
wx.onMenuShareAppMessage({
title: "aaa", // 分享标题
desc: "bbb", // 分享描述
link: "http://baidu.com", // 分享链接;在微信上分享时,该链接的域名必须与企业某个应用的可信域名一致
imgUrl: "http://baidu.com/share.jpg", // 分享图标
enableIdTrans: 1, // 是否开启id转译,不填默认为0
success: function () {
// 用户确认分享后执行的回调函数
},
error: function (res) {
if (res.errMsg.indexOf("no permission") > 0) {
alert("未agentConfig");
}
},
cancel: function () {
// 用户取消分享后执行的回调函数
},
});
}
后续开发可以查看微信提供的js-sdk方法,如 获取外部联系人、分享消息、微信客服工具栏等功能, 上文主要记录企业微信h5初始化
import hashlib
from sanic import Sanic
from sanic.response import JSONResponse, HTTPResponse
from sanic.request import Request
from sanic_cors import CORS
app = Sanic("js-sdk")
# 企业jsapi-ticket
jsapi_ticket = "企业微信的js_api_ticket"
# 应用js-api-ticket
agent_ticket = "应用js-ticket"
@app.get("/get_js_sign")
async def get_js_sign(request):
noncestr = "abdgeTehgrafeRwf"
url = "https://baidu.com"
timestamp = int(time.time())
sign_str = "jsapi_ticket={}&noncestr={}×tamp={}&url={}".format(jsapi_ticket, noncestr, timestamp, url)
agent_str = "jsapi_ticket={}&noncestr={}×tamp={}&url={}".format(agent_ticket, noncestr, timestamp, url)
sign = hashlib.sha1(sign_str.encode("utf-8")).hexdigest()
agent_sign = hashlib.sha1(agent_str.encode("utf-8")).hexdigest()
return JSONResponse({"noncestr": noncestr, "timestamp": timestamp,
"sign": sign, "agent_sign": agent_sign})
待更新
待更新
因篇幅问题不能全部显示,请点此查看更多更全内容