Небольшая программа для обмена и получения групповой информации - openGId

внешний интерфейс WeChat товар mpvue

Введение

В последнее время я работаю над небольшой программой.Основное направление исследований - обработка групповой информации.Большинство функций малой программы основано на обмене карточкой путем открытия маленькой программы, которая пересылается в группу...
Началось вличный блог

Несколько слов о пересылкеAPI

  • Page.onShareAppMessage
  • wx.showShareMenu
  • wx.hideShareMenu
  • wx.updateShareMenu
  • wx.getShareInfo

связанные с пересылкойapiВсего имеется 5 элементов, и ниже кратко представлены эти элементы.apiи напишите, что вы используетеmpvueПроблемы, возникающие при разработке

Page.onShareAppMessage

Определите функцию onShareAppMessage в Page, чтобы установить информацию о пересылке страницы.

  • Только если этот обработчик событий определен, в правом верхнем меню будет отображаться кнопка «Вперед».
  • Вызывается, когда пользователь нажимает кнопку вперед
  • Это событие должно возвращать объект для пользовательского содержимого пересылки.

Необходимо отметить, чтоТолько если этот обработчик событий определен, в правом верхнем меню будет отображаться кнопка «Вперед»., если вы определяете событие и не хотите, чтобы страница проходилаmenuпереадресовано, черезhideShareMenuпрятаться

существуетmpvueЭто событие также следует настроить после компиляции, потому что некоторые страницы также скрыты отдельно из-за проблем с запросом.

После переадресации можно пройтиfromпараметры для определенияmenuпереадресация меню илиbuttonВперед, выносить какие-то суждения.

  • После успешной переадресации, если не определеноПользовательские поля переадресации, будет использована карта по умолчанию.Если нет переадресации, карта не будет передана.
  • formПоля можно получить, позвонив после успешной переадресацииsuccess,completeсоединитьmenuа такжеbuttonразличные операции
  • Если вы носитеshareTicketзначение, будет вsuccessОбратный вызов генерируется, и возвращаемый результат находится вshareTicketsполе, представляет собой массив.

Связанные ссылки API

wx.hideShareMenu

скрыть кнопку вперед

просто спрячьmenuпересылка,buttonФункция переадресации по-прежнему будет существовать

Если установить сначалаshowShareMenuи настроитьwithShareTicket, затем используйтеhideShareMenuспособ, вперед через кнопку, еще можно достатьshareTicket,следующим образом:

wx.showShareMenu({
  withShareTicket: true
})
wx.hideShareMenu({

})

Не спрашивайте меня, почему я тестирую эти вещи.

Связанные ссылки API

wx.showShareMenu

Отображает кнопку вперед для текущей страницы

wx.showShareMenu({
  withShareTicket: true
})

Настройка этого параметра в основном предназначена для его использования.shareTicketфункция, с помощью которой можно получить групповую информацию и групповую идентификацию.

Связанные ссылки API

wx.updateShareMenu

Обновить свойства переадресации

Я тоже использую его здесьwithShareTicketИспользование изменения поля

Да, это та корова

Связанные ссылки API

wx.getShareInfo

Получить детали переадресации

wx.getShareInfo({
    shareTicket: res.shareTickets[0],
    success: (res) => {
        console.log('已成功获取到加密信息')
        console.log(res)    
    },
    fail: (res) => {
      console.log(res)
    }
})

параметр обратного вызова

{
    errMsg: "getShareInfo:ok", 
    iv: "gRHeFU+Nhr36RmladCXnRQ==", 
    encryptedData: "IQ/RwZLeQFUGuxv0bBfOrL/KLnXO+bxcyCBru5lB92FkHIg8ae…7TnHwU+rqgerFKvpvS5JbFyh+9liUqyb2bk6/LETYQ+h/FQ=="
}

Связанные ссылки API

Отправьте его на бэкенд, расшифруйте в бэкэнде и получитеopenGId.

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

Получить процесс openGid

Есть два основных способа его получить:

  1. Сначала пользователь открываетshareTicketкарту общего доступа, а затем получить зашифрованную информацию с помощью getShareInfo(), отправить ее в фоновый режим для расшифровки, а затем получитьopenGId;
  2. Во-вторых, после того, как пользователь успешно поделится, он получитshareTicket, а затем получить зашифрованную информацию с помощью getShareInfo(), отправить ее в фоновый режим для расшифровки, а затем получитьopenGId.

Эти два метода в основном предназначены для полученияshareTicketОднако требования к продукту нашей компании заключаются в том, чтобы сравнивать и добавлять разрешения пользователям через эти два метода — администратор активно делится в определенной группе, записываетopenGId, анализировать все поступающие мини-программы, осуществляемыеshareTicketпользователя, если сравнение прошло успешно, дать ему разрешение на выполнениеVIPОперация, если сравнение не удалось, перехватить.

Получить shareTicket после успешного обмена

получено в фоновом режимеopenGIdчерез специальныйbuttonкнопка поделиться

onShareAppMessage: (resMessage) => {
    console.log(`这是通过:${resMessage.from}`)
    // 分享卡片内容
    return {
      title: '首页分享',
      imageUrl: 'https://xx.xxx.com/123.jpg',
      path: 'pages/guide/main',
      success: (res) => {
        // 转发成功,向后台发送openGId
        console.log(res.shareTickets)
        if (resMessage.from === 'button') {
          wx.getShareInfo({
            shareTicket: res.shareTickets[0],
            success: (res) => {
              console.log('已成功获取到加密信息')
              wx.request({
                url: `${service}api/saveOpenGId`,
                data: {
                  encryptedData: res.encryptedData,
                  vi: res.vi
                },
                success: (res) => {
                  console.log(res.data)
                  if (res.data.success === 'true') {
                    console.log('openGId 已成功存入数据库')
                  }
                }
              })
            },
            fail: (res) => {
              console.log(res)
            }
          })
        }
      },
      fail: (res) => {
        // 转发失败
        console.log(res)
      }
    }
}

несяshareTicketспособ обмена картами в апплете

if (this.$root.$mp.appOptions.shareTicket) {
    this.shareTicket = this.$root.$mp.appOptions.shareTicket
    // 对比openGId
    const verify = await this.userRole()
    if (verify.compare === true) {
      // 跳转到 VIP 首页
      wx.redirectTo({
        url: '../index/main'
      })
    } else if (verify.compare === false) {
      // 对比失败,跳转到普通首页
      wx.redirectTo({
        url: '../common/main'
      })
    }
}

Некоторые операции по отключению переадресации

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

Правильная работа в это время

Операция в это время

Page.onShareAppMessage()

wx.hideShareMenu()

Информационная страница мини-программырекомендовать друзьям

image

В то время я еще переживал, что эту страницу могут переслать, потому что она была в системе WeChat и не могла пройти существующуюAPIЧтобы запретить его, его можно перехватить только по значению сцены.

босс: Человек, который может найти этот обмен, может считаться добросовестным человеком.Просто дайте ему разрешение на обмен, но если он хочет увидеть контент, двери нет.

Режим компиляции — моделирование значений сценария

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

image

Это может напрямую имитировать открытие и переноскуshareTicketДействия после обмена картой.

допустимыйApp.onLaunch()илиApp.onShowполучатьshareTicket.

Получить эту информацию от mpvue

существуетmpvueпрошедшийthis.root.mp.appOptionsчтобы получить апплет наapp onLaunch/onShowвремя прошлоoptions.

Следует отметить, что жизненный цикл двух,beforeCreateа такжеcreatedЭта информация недоступна.

напиши в конце

Я напишу это сейчас, я напишу это позже, когда подумаю об этом.

Категории