Nodejs微信分享相关的开发问题请教
Nodejs微信分享相关的开发问题请教
我在用wechat做微信的小玩意儿,偶然看到一个公众号可以实现“分享给朋友,10个朋友打开后有奖”这么个功能。 直接在这个公众号打开该活动的链接,可以看到链接为: https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx0f4a9458ebbbc31e&redirect_uri=http%3A%2F%2Fmobile.wangtu.com%2Fweixin%2Fpage%2Fmenu%2FChouJiang3.aspx%3Fdlid%3D9584%26shareinfoId%3D12&response_type=code&scope=snsapi_base&state=1#wechat_redirect 分享给朋友后,链接变为: https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx0f4a9458ebbbc31e&redirect_uri=http%3A%2F%2Fmobile.wangtu.com%2Fweixin%2Fpage%2Fmenu%2FChouJiang3.aspx%3Fdlid%3D9584%26from_openid%3DoDOPTs5JqUUHD6bn5txvXySpauGQ%26shareinfoId%3D12&response_type=code&scope=snsapi_base&state=1&from=singlemessage&isappinstalled=0#wechat_redirect 前后的变化有一些是微信服务器自己给加的,但有一部分应该是开发者给加的:“from_openid%3doDOPTs5JqUUHD6bn5txvXySpauGQ%26”,这个参数应该是标明了分享者的openid。有了这个参数,被分享的人点开链接之后,就可以计算该分享者分享的链接被打开的次数。 我不明白的是:如何使这个链接被分享后,加上这个分享者openid的参数?
谢谢!
要实现微信分享功能并追踪分享者的信息(例如通过 from_openid
参数),你需要使用微信的 OAuth2.0 授权机制,并结合 Node.js 来处理授权过程和生成带参数的分享链接。
以下是一个简单的示例代码,帮助你理解如何实现这一功能:
1. 初始化微信 SDK
首先,你需要初始化微信 SDK,确保你已经获取了微信的 AppID 和 AppSecret。
const axios = require('axios');
const qs = require('querystring');
const appId = 'wx0f4a9458ebbbc31e';
const appSecret = 'your_app_secret';
async function getAccessToken(code) {
const url = `https://api.weixin.qq.com/sns/oauth2/access_token?appid=${appId}&secret=${appSecret}&code=${code}&grant_type=authorization_code`;
const response = await axios.get(url);
return response.data;
}
2. 获取用户 OpenID
当用户通过微信授权登录时,微信会重定向到你的 redirect_uri
并带上 code
参数。你可以使用这个 code
获取用户的 OpenID。
app.get('/oauth', async (req, res) => {
const { code } = req.query;
try {
const data = await getAccessToken(code);
const openid = data.openid;
console.log(`User OpenID: ${openid}`);
// 在这里进行进一步处理,例如保存到数据库
res.send('授权成功');
} catch (error) {
console.error(error);
res.status(500).send('授权失败');
}
});
3. 生成带参数的分享链接
在用户授权成功后,你可以生成一个包含 from_openid
参数的分享链接。
function generateShareLink(fromOpenid, shareInfoId) {
const encodedFromOpenid = encodeURIComponent(fromOpenid);
const shareUrl = `http://mobile.wangtu.com/weixin/page/menu/ChouJiang3.aspx?dlid=9584&shareinfoId=${shareInfoId}&from_openid=${encodedFromOpenid}`;
const wxAuthUrl = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${encodeURIComponent(shareUrl)}&response_type=code&scope=snsapi_base&state=1#wechat_redirect`;
return wxAuthUrl;
}
// 示例调用
const fromOpenid = 'oDOPTs5JqUUHD6bn5txvXySpauGQ';
const shareInfoId = '12';
const shareLink = generateShareLink(fromOpenid, shareInfoId);
console.log(shareLink);
4. 分享逻辑
在前端页面中,你可以使用生成的 shareLink
进行分享。当用户点击分享链接时,微信会自动添加 from_openid
参数。
总结
通过上述步骤,你可以实现微信分享功能,并通过 from_openid
参数追踪分享者的身份。这种方式可以帮助你统计分享链接被打开的次数,从而实现类似“分享给朋友,10个朋友打开后有奖”的功能。
希望这些示例代码能帮助你解决你的问题!
自己顶
当你点分享按钮的时候应该是提交到你的服务器,在服务端可以获取分享者openid,再拼接上去
我的是前端的JS接口,参数是通过拼接生成的。