Авторизованный вход в программу WeChat Mini Передовой опыт

внешний интерфейс сервер WeChat Апплет WeChat

Бизнес компании запущен, а недавно завершена разработка апплета WeChat. Сценарий выглядит следующим образом: APP и апплет WeChat с одним и тем же предметом на одной и той же открытой платформе WeChat выполняют один и тот же бизнес.Когда пользователь входит в приложение или апплет WeChat, пользователь должен получить unionid пользователя, чтобы подтвердить текущую личность пользователя и завершить логин. Метод вызова апплета "получить информацию о пользователе" API (getUserInfo) был значительно обновлен по сравнению с предыдущим. Очень важно элегантно реализовать авторизацию пользователя и вход в систему. Ниже приведена моя реализация апплета WeChat, связанного с авторизацией и входом в систему. процессы во время разработки.Идеи и резюме делятся следующим образом.

1. Последовательность процесса входа в апплет WeChat

登录流程时序

инструкция:

  1. Апплет вызывает wx.login() для получения временного кода для входа в систему и отправляет его обратно на сервер разработчика.
  2. Сервер разработчика обменивает код на уникальный идентификатор пользователя openid и сеансовый ключ session_key.
  3. Временный код для входа в систему можно использовать только один раз.

Что такое опенид?

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

  • Идентификация обычных пользователей, уникальных для текущего официального аккаунта
  • Разные официальные аккаунты, один и тот же пользователь, разные openid

Вы можете просто понять как

openid = hash(uid + app_id)

Что такое юнионид?

Если у разработчика есть несколько мобильных приложений, веб-приложений и публичных аккаунтов (включая мини-программы), уникальность пользователей можно отличить по unionid, потому что пока это мобильное приложение, веб-приложение и публичный аккаунт под одним и тем же WeChat Open Учетная запись платформы (включая апплет), UnionID пользователя уникален. Другими словами, один и тот же пользователь имеет один и тот же unionid для разных приложений на одной и той же открытой платформе WeChat.Описание механизма UnionID

Если разработчикам необходимо объединить учетные записи пользователей среди нескольких мобильных приложений, веб-приложений и официальных учетных записей, им необходимо перейти на открытую платформу WeChat (open.weixin.qq.com), чтобы привязать официальную учетную запись, а затем они могут использовать механизм UnionID. для удовлетворения требований вышеперечисленных требований.

  • Одна учетная запись WeChat Open Platform может иметь несколько мобильных приложений, веб-приложений, общедоступных учетных записей и небольших программ.
  • Пока это мобильное приложение, веб-приложение и общедоступная учетная запись (включая мини-программы) под одной и той же учетной записью WeChat Open Platform, unionid пользователя уникален.

Уникальный идентификатор пользователя на открытой платформе

Вы можете просто понять это как:

unionid = hash(uid + 开放平台id)

Подводить итогиWeChat имеет уникальный openId для разных пользователей в разных приложениях, но чтобы определить, является ли пользователь одним и тем же пользователем, его нужно различать по unionid. Как правило, ваш собственный фон будет иметь свою собственную таблицу пользователей, и у каждого пользователя будет свой идентификатор пользователя. То есть приложения одного и того же пользователя и одного и того же субъекта на одной и той же открытой платформе WeChat соответствуют одному и тому же идентификатору пользователя, unionid и разным идентификаторам openid. Таким образом, когда пользователь входит в систему, мы можем полагаться только на идентификатор союза, возвращенный нам WeChat, чтобы определить, является ли это одним и тем же пользователем, а затем связать нашу таблицу пользователей, чтобы получить соответствующий идентификатор пользователя.

2. Как апплет WeChat получает unionid?

Для мини-программ, привязанных к учетной записи разработчика, UnionID можно получить следующими тремя способами.

  1. интерфейс вызоваwx.getUserInfo, получите UnionID из расшифрованных данных. Обратите внимание, что этот интерфейс требует авторизации пользователя, и разработчик должен правильно обрабатывать ситуацию после отказа пользователя от авторизации.
  2. Если есть официальная учетная запись той же темы под учетной записью разработчика, и пользователь подписался на официальную учетную запись. Разработчики могут напрямую получить UnionID пользователя через wx.login, не требуя от пользователя повторной авторизации.
  3. Если под учетной записью разработчика имеется официальная учетная запись или мобильное приложение той же тематики, и пользователь авторизован для входа в официальную учетную запись или мобильное приложение. Разработчики также могут напрямую получить UnionID пользователя через wx.login, не требуя от пользователя повторной авторизации.

Когда пользователь соответствует условиям 2 и 3, разработчик может напрямую получить unionid пользователя через wx.login, в противном случае интерфейс должен вызыватьсяwx.getUserInfo, Дополнительно следует обратить внимание на правильную обработку отказа пользователя авторизоваться.

3. Рекомендации по входу в систему

  1. Позвоните wx.login, чтобы получить код.
  2. Используйте wx.getSetting для авторизации пользователя
    • Если пользователь авторизован, напрямую вызовите API wx.getUserInfo, чтобы получить последнюю информацию о пользователе;
    • Если пользователь не авторизован, на интерфейсе отображается кнопка, предлагающая пользователю войти в систему. Когда пользователь нажимает и авторизуется, получается самая последняя информация о пользователе.
  3. Передать полученные пользовательские данные на серверную часть вместе с кодом, возвращаемым wx.login

Обернуть ajax()

Мы надеемся, что в реальном бизнес-сценарии, когда пользователи войдут в апплет, они смогут нормально просматривать продукты, не входя в систему, и иметь общее представление об апплете. Потеря пользователей. Когда пользователям необходимо использовать некоторые расширенные функции и сценарии, они будут запрашивать авторизацию пользователя в это время, так что вероятность авторизации пользователя будет значительно улучшена. Инкапсулируйте логику входа в систему с помощью ajax Процесс:

Значение упаковкиБольше не обращайте внимания на то, нужно ли авторизоваться на текущем интерфейсе, авторизован ли пользователь, все запросы вызываются напрямуюajax(), и при необходимости завершите все процессы входа и авторизации. Входная страница апплета увеличена, и когда бизнес расширяется, вам нужно сосредоточиться только на реализации бизнеса.

использованная литература

Категории