详解小程序登录流程:wx.login()与获取用户信息的正确使用方法

2025-02-12
来源:网络整理

登录和获取用户信息是中最基本的两步操作,但是由于小程序开始时的设计缺陷,许多开发人员将绑定并获取用户信息以使用它,尽管 WX。稍后对接口进行调整:当用户未授权此接口时,授权弹出窗口将不再显示,并且将直接输入失败回调。但是,在变更之后,许多开发人员仍然对这两个步骤的概念感到困惑。在本文中,我们将详细介绍Mini计划的这两个步骤。

登录

wx。()用于执行登录方法,调用接口以获取登录凭据,然后将代码发送到后端以替换和其他数据。让我们看一下Mini计划的整个登录过程:

这是Mini计划的正式登录流程图。让我们现在解释这个过程

在微信开放平台下存在应用程序,官方帐户和带有同一主题的迷你计划

用户可以通过遵循具有相同主题的公共帐户或在具有同一主题的公共帐户上使用微信登录授权来获取用户,然后满足上述两个条件。通过这种方式,他们可以使用户在WX中。()确切确定用户是谁

登录用户不是该小程序的开发者_用户开发者选项_开发者账号登录

以上是迷你程序的整个登录过程。您可以看到WX。()不需要获取用户信息。在特定条件下,您还可以通过WX的呼叫()在后端数据库中获取它。向用户信息

获取用户信息

过去,调用WX。()时会弹出一个授权弹出框。相应的回调函数将根据用户的授权输入。但是,后来微信发现开发人员滥用了WX。()方法,并且在不授权用户信息的情况下无法使用Mini程序。现在,仅通过组件开放型=“”触发授权弹出窗口。授权后,您可以获取用户信息和用户信息的加密数据,并将用户信息的加密数据发送到后端。后端可以通过WX替换。()代码。可以通过解密加密数据来获得用户的完整信息。此步骤实际上是第一步的补充。仅当Wx。()无法确认用户时,才会执行此步骤。如果是在WX。()中可以确认用户信息时,则无需执行此步骤即可获得用户的隐形登录。

注意:根据Mini计划发布的最新文档,Mini程序无法输入Mini程序,并且当用户输入Mini程序时,登录框将弹出,要求用户登录以体验Mini程序。这种操作审查将被拒绝,用户必须体验某个迷你程序。只有在函数才能引导用户登录到授权的用户信息和特定文档地址

过期的重新注册

过去,当我们编写Web应用程序时,当后端发出后端失败时,请求接口将获得403错误代码。然后,当前端收到返回的错误代码时,它将跳到登录页面并要求用户再次登录,但是当迷你程序失败时。何时需要跳到登录页面并再次登录?显然不需要,因为迷你程序本身没有帐户密码可以登录,因此,如果登录失败,只需执行毫无意义的重新操作操作,除非某些Mini程序不依赖微信登录信息,否则在迷你计划中本身。用户登录信息需要跳到登录页面重新使用,但是仍然有一些这样的迷你程序。接下来,让我们看一下迷你程序如何在没有任何意义的情况下重新使用。

让我们直接查看代码:

登录用户不是该小程序的开发者_开发者账号登录_用户开发者选项

  1. const Fly = require('../libs/flyio')

  2. const fly = new Fly()

  3. const newFly = new Fly()

  4. let time = 0

  5. let baseUrl = 'xxxxx'

  6. fly.interceptors.request.use((request) => {

  7. wx.showNavigationBarLoading()

  8. request.headers['token'] = wx.getStorageSync('token')

  9. request.baseURL = baseUrl

  10. return request

  11. })

  12. newFly.interceptors.request.use((request) => {

  13. wx.showNavigationBarLoading()

  14. request.headers['token'] = wx.getStorageSync('token')

  15. request.baseURL = baseUrl

  16. return request

  17. })

  18. fly.interceptors.response.use(

  19. (response, promise) => {

  20. wx.hideNavigationBarLoading()

  21. return promise.resolve(response.data)

  22. },

  23. function (err, promise) {

  24. wx.hideNavigationBarLoading()

  25. // session或者session_key失效的时候重新登录

  26. if (err.status === 403) {

  27. //锁定当前实例,后续请求会在拦截器外排队

  28. this.lock()

  29. // 当出现未认证的情况时重新登录,超过三次抛出错误

  30. if (time > 3) {

  31. time = 0

  32. return promise.reject(err.message + `(${err.status})`)

  33. }

  34. return new Promise((resolve, reject) => {

  35. wx.login({

  36. success: (e) => {

  37. let options = {

  38. 'code': e.code

  39. }

  40. resolve(options)

  41. }

  42. })

  43. }).then((options) => {

  44. return newFly.post('/login', options).then(info => {

  45. wx.setStorageSync('token', info.token)

  46. time++

  47. //解锁后,会继续发起请求队列中的任务

  48. this.unlock()

  49. // 重新请求失败的请求

  50. return fly.request(err.request)

  51. })

  52. })

  53. }

  54. }

  55. )


  56. export {

  57. fly

  58. }

上面的代码显示了迷你程序的过期和重新设置的过程。代码不多,在关键点中添加了评论,这很容易理解。这里最重要的是使用此网络请求库,并使用此库到期。重新记录,这是基于多个运行时间的功能强大的运行时间HTTP请求库。您可以使用HTTP请求代码在浏览器,微信系,WEEX,节点和快速应用程序中正常运行。该库在迷你程序中非常方便。为了避免使用死循环,此代码使用计数。如果您在三次以上之后不尝试再次登录,则将直接丢弃错误

总结

本文主要介绍Mini程序的登录过程,获取用户信息以及登录过期和重新登录的相关内容。在这里,我们只介绍基本的一般过程。实际上,每个迷你计划的业务可能不同,因此在特定的应用程序中,需要根据特定业务进行调整。

如果有任何错误或不适当的方面,请批评和纠正我。如果您喜欢,请喜欢。

分享