|
@@ -40,6 +40,8 @@ const { WECHAT_APPID, WECHAT_SECRET } = { WECHAT_APPID: "wx2d69589899b7ecd6", WE
|
|
|
// WECHAT_SECRET: "4014c49f54d2fc31150d654f5d7ad1b8",
|
|
|
// };
|
|
|
|
|
|
+// qgt
|
|
|
+// const { WECHAT_APPID, WECHAT_SECRET } = { WECHAT_APPID: "wxbb3ac888b7d39c86", WECHAT_SECRET: "b9a978b1570b0da7242627b856dbafc6" };
|
|
|
|
|
|
|
|
|
// const WECHAT_REDIRECT_URI = "https://liyuan.cocorobo.cn/#/login"; // 微信授权后的回调地址
|
|
@@ -83,6 +85,8 @@ router.route("/wechat-callback").all(async (req, res) => {
|
|
|
status: tokenResponse.status,
|
|
|
statusText: tokenResponse.statusText
|
|
|
});
|
|
|
+
|
|
|
+
|
|
|
} catch (error) {
|
|
|
console.log(error);
|
|
|
res.status(500).json({
|
|
@@ -258,4 +262,78 @@ function generateAPIKey(username) {
|
|
|
return digest;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+// 微信获取用户的accept_token
|
|
|
+router.route("/wechat-get-signature").all(async (req, res) => {
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 使用授权码换取 access_token
|
|
|
+ // const tokenResponse = await axios.get(
|
|
|
+ // `https://api.weixin.qq.com/sns/oauth2/access_token?appid=${WECHAT_APPID}&secret=${WECHAT_SECRET}&code=${code}&grant_type=authorization_code`
|
|
|
+ // );
|
|
|
+
|
|
|
+ const tokenResponse = await axios.get(
|
|
|
+ `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${WECHAT_APPID}&secret=${WECHAT_SECRET}`
|
|
|
+ );
|
|
|
+
|
|
|
+ if(tokenResponse.status=='200'){
|
|
|
+ const tticketResponse = await axios.get(`https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=${tokenResponse.data.access_token}&type=jsapi`)
|
|
|
+ console.log("tticketResponse",tticketResponse)
|
|
|
+ if(tticketResponse.data.errcode==0){
|
|
|
+ const url = decodeURIComponent(req.query.url);
|
|
|
+ let params = {
|
|
|
+ jsapi_ticket: tticketResponse.data.ticket, // 获取到的 jsapi_ticket
|
|
|
+ nonceStr: 'wechat-signature-'+new Date().getTime(), // 随机字符串
|
|
|
+ timestamp: new Date().getTime(), // 时间戳
|
|
|
+ url: url // 当前页面的 URL
|
|
|
+ }
|
|
|
+ var string = 'jsapi_ticket=' + params.jsapi_ticket + '&noncestr=' + params.nonceStr + '×tamp=' + params.timestamp + '&url=' + params.url;
|
|
|
+ // 使用crypto模块的SHA1算法生成签名
|
|
|
+ var signature = crypto.createHash('sha1').update(string, 'utf8').digest('hex');
|
|
|
+ // let _signature = crypto.createHash('sha1').update(string, 'utf8').digest('hex');
|
|
|
+
|
|
|
+ res.status(200).json({
|
|
|
+ success:true,
|
|
|
+ data:{
|
|
|
+ params,
|
|
|
+ signature,
|
|
|
+ appId:WECHAT_APPID,
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ res.status(500).json({
|
|
|
+ success: false,
|
|
|
+ error: "获取jsapi_ticket失败",
|
|
|
+ message: tticketResponse.data.errmsg || "获取jsapi_ticket失败"
|
|
|
+ });
|
|
|
+ }
|
|
|
+ // res.status(200).json({
|
|
|
+ // success: true,
|
|
|
+ // data: tticketResponse.data,
|
|
|
+ // });
|
|
|
+ // if(tticketResponse.status=='200'){
|
|
|
+ // res.status(200).json({
|
|
|
+ // success: true,
|
|
|
+ // data: tticketResponse.data, // 只发送响应数据,不发送整个响应对象
|
|
|
+ // status: tticketResponse.status,
|
|
|
+ // statusText: tticketResponse.statusText
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+ }else{
|
|
|
+ res.status(500).json({
|
|
|
+ success: false,
|
|
|
+ error: "获取access_token失败",
|
|
|
+ message: tokenResponse.data.statusText || "微信API返回错误"
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.log(error);
|
|
|
+ res.status(500).json({
|
|
|
+ success: false,
|
|
|
+ error: "授权失败",
|
|
|
+ message: error.message
|
|
|
+ });
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
module.exports = router;
|