Оптимальный процесс входа в апплет

Апплет WeChat
Оптимальный процесс входа в апплет

Вход в мини-программу без нажатия на процесс входа

причина

В середине 18 лет я сделал небольшую программу, в то время я перешел на страницу входа и нажал позвонитьwx.getUserInfo, а потом обнаружил, что это апи отключено (хотя его все равно можно использовать), а потом использовать

<!-- 需要使用 button 来授权登录 -->
<button wx:if="{{canIUse}}" open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">授权登录</button>
<view wx:else>请升级微信版本</view>

Потому что в то время была нужна информация о пользователе, и тогда у этого API естьencryptedDataСвойства могут получать информацию.

Этот процесс можно было сделать, но это произошло неожиданно.

заключенное в тюрьму мышление

Когда новый апплет необходимо разработать во второй раз (2020 г.), также используется старый код,但是出现了个奇怪的问题。 有兴趣的可以看下面的[奇怪的问题]

Странный вопрос:

Из-за ограничений WeChat невозможно перейти на страницу входа, поэтому мне интересно, следует ли мне настроить всплывающее окно на домашней странице и авторизовать его, когда я нажимаю на него.

Однако, учитывая возможность отказа WeChat, я открыл статью на форуме разработчиков мини-программ.

Приложение не может перейти на страницу входа и философское мышление входа в апплет

Позже выяснилось, что для входа на самом деле не требуется всплывающее окно или страница авторизации. (если серверу не нужно сохранять информацию о пользователе)

обработать

Следующее изображение является официальным изображением апплета.щелкни меня, чтобы прыгнуть

код

Полный код app.js (входной файл апплета)

const loginDataKey = 'loginData'

//app.js
App({
  onLaunch: function () {

    const loginData = wx.getStorageSync(loginDataKey)
    console.log('--loginData--')
    console.log(loginData)
    let toLogin = () => {
      console.log('未登录,去登录..')
      wx.showLoading({title: '登录中', icon: 'loading', mask: true})
      wx.login({
        success(res){
          console.log('wx.login res')
          console.log(res)
          let success = () => {
            console.log('登录成功')
            let loginResponse = {"openid":"ooZAbwpdDdaZV_xiamianshi_mashaike"}
            wx.setStorageSync(loginDataKey, loginResponse)
            wx.hideLoading()
          }
          let fail = () => {
            wx.hideLoading()
            wx.showToast({
              title: '登录失败,请重新打开小程序试试',
              icon: 'none',
              duration: 1e8
            })
          }
          // TODO 发起网络请求
          // 延时模拟请求登录成功
          setTimeout(success, 500)
        },
        fail(err){
          console.log(err)
          wx.hideLoading()
          wx.showToast({
            title: '登录失败,请重新打开小程序试试',
            icon: 'none',
            duration: 1e8
          })
        }
      })
    }
    // 未登录,去登录
    if(!loginData){
      toLogin()
    // 已登录,但是微信session_key过期
    }else{
      wx.checkSession({
        success () {
          //session_key 未过期,并且在本生命周期一直有效
          console.log('session_key 未过期')
        },
        fail () {
          // session_key 已经失效,需要重新执行登录流程
          console.log('session_key 已经失效,需要重新执行登录流程, 重新登录中')
          toLogin()
        }
      })
    }

  },
  globalData: {
    userInfo: null
  }
})

Процесс выглядит следующим образом

  • Определите, следует ли входить в систему на основе локального хранилища
  • Выполнен вход, чтобы определить, является ли он недействительным
  • Недействительный или не авторизован для входа
  • Войдите, чтобы показать тост
  • получить информацию о магазине закрыть тост

основной

  • wx.login, чтобы получить код
  • Затем передайте код черезauth.code2SessionПолучить openid и unionid и т.д.

это то, что я прохожуauth.code2SessionПолучите скриншот openid (поскольку это тестовый номер, поэтому unionid отсутствует)
[unionid] — ключ к открытию счетов на других платформах.Если у вас только один апплет, он вам не нужен.

Эффект

разное

Просто отобразите аватар пользователя, псевдоним и т. д.

<open-data type="userAvatarUrl"></open-data>
<open-data type="userNickName"></open-data>

Ознакомьтесь с документацией по открытым данным

Об официальном уведомлении о входе в апплет

Предложения по настройке и оптимизации параметров входа в учетную запись пользователя в мини-программе {официальный}Существуют стандарты аудита, и обучение аудиторов основано на них.

В нем много голосов, а значит, юнионид получить нельзя.

Это можно увидеть в первую очередьОписание механизма UnionIDНо многие люди следуют за этим и не могут получить это, почему? ?

Wechat, я думаю, тоже должен нести вину, а 2 или 3 раньше не было. Сейчас это все еще не хорошо, потому что его нужно установить в фоновом режиме апплета -> связанные настройки -> привязанные к платформе разработки.

(Почему оно снова задействовано в платформе разработки? Вы не можете помолчать? Например, вы можете получить его, пока вы связаны с официальным аккаунтом. Что касается мобильного приложения, вы можете заставить его开放平台возьми это)

Но эти студенты могут не увидеть эту статью~~

--над--