【第一期】盘点网站接入微信登录的几种方法-技术论坛-技术-6KE论坛-综合开放交流论坛

【第一期】盘点网站接入微信登录的几种方法

引言
大家好,我是呱呱。 
众所周知,“呱呱网”在去年7月进行过一次停服更新,这次更新加入了“呱呱云账号”(其实就是单点登录)。 而在“呱呱云账号”的实际开发过程中,接入了微信快捷登录。  
所以接下来几期文章,呱呱将带领大家了解个人、企业网站接入微信快捷登录的几种姿势。

Part1 订阅号向用户发送验证码
这种方式有个特别大的优点:有个人订阅号就可以使用,而且不用通过微信认证。同时对于保护用户隐私是极好的,因为你只能拿到OpenID,不给你头像昵称。
原理
当你的订阅号配置了服务器后,订阅号收到的每条消息都会转发到你配置的服务器。服务器收到的内容中包含OpenID,它对于该公众号来说,是唯一的。
用法
在你的网站放上一张公众号的二维码,并显示一个验证码输入框。用户扫码关注后给公众号发送“登录”,将公众号发来的验证码粘贴到输入框中,滴~登录成功!
Demo
代码写的糙了点,将就着看吧~
const express = require("express");
const {parseString} = require('xml2js');
const app = express();
app.use(express.json());

function sendTextMsg(toUser, fromUser, content) {
  let resultXml = "<xml><ToUserName><![CDATA[" + fromUser + "]]></ToUserName>";
  resultXml += "<FromUserName><![CDATA[" + toUser + "]]></FromUserName>";
  resultXml += "<CreateTime>" + new Date().getTime() + "</CreateTime>";
  resultXml += "<MsgType><![CDATA[text]]></MsgType>";
  resultXml += "<Content><![CDATA[" + content + "]]></Content></xml>";
  return resultXml;
}

app.post("/api/wechat", async (req, res) => {
  var buffer = [];
 req.on("data", function (data) {
    buffer.push(data);
  });
  req.on("end", function () {
    var msgXml = Buffer.concat(buffer).toString("utf-8");
    parseString(msgXml, { explicitArray: false }, function (err, result) {
      if (err) throw err;
      result = result.xml;
      const { ToUserName, FromUserName, MsgType, Content } = result;
      if (MsgType === "text" && Content === "登录") {
        const code = "6666"; //这里写你的验证码逻辑
        const sendXml = sendTextMsg(
          ToUserName,
          FromUserName,  // 这里的FromUserName就是用户的OpenID
          `您的登录验证码是 ${code} 。`
        );
        res.send(sendXml);
      }
    });
  });
});

module.exports = app;
结语
使用微信快捷登录的方式有很多,好处也很多,最能体现的就是个人网站不需要再去买短信验证码额度,节省许多成本。用户也不必担心自己的隐私泄露。
欢迎关注公众号:呱呱云网络技术
持续更新中,敬请期待~
© 免责声明

请登录后发表评论

    没有评论内容