实习期间,我遇到了一个需求,需要实现内嵌微信二维码扫码登录。这个需求虽然看似简单,实则有一定难度。我们的技术栈是Vue3+Pinia+TypeScript,而我之前只接触过微信小程序的微信授权登录。经过查阅资料和询问GPT,我整理出了流程和实现方法,希望能对大家有所帮助。首先,我们来梳理一下官方流程。开发者的任务包括:1. 前端(Vue 3)生成登录二维码;2. 用户扫码并授权;3. 后端(Express)处理授权回调;4. 完成用户登录。为了实现上述流程,Express后端需要编写以下接口:这些是实现微信扫码登录功能最基本的后端接口。根据具体需求,可能还需要添加其他接口,例如用户注册、密码找回、用户权限管理等。接下来,我们看看前端Vue组件的相关代码。用户点击微信登录时,需要有一个组件负责显示登录二维码,并处理用户点击事件来获取二维码。在实现过程中,有几个问题比较迷惑。首先,微信重定向到底重定向到哪里?在微信开放平台创建应用时,需要提供一个“回调 URL”(也称为重定向 URI)。这个URL应该指向服务器上的一个接口,在本例中应指向/wechat-callback接口。用户通过微信完成扫码并授权后,微信会自动将用户的浏览器重定向到这个URL。这个重定向动作的主要目的是将用户带回应用或网站,并在这个过程中,微信会向提供一些关键信息,主要是“授权码”(code)。授权码在OAuth 2.0授权流程中起到重要作用。它是一种短暂有效的码,用于在用户授权后在微信和服务器之间安全传递信息。实际的登录操作流程如下:前端Vue3应用在用户开始扫描二维码后,会定期向后端发送请求以查询登录状态。这里有两种方法:1. 轮询(Polling);2. WebSocket;3. 重定向和前端路由。