Авторизация на веб-странице WeChat

WeChat

задний план

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

настроить

  1. Прежде чем официальная учетная запись WeChat запросит авторизацию веб-страницы пользователя, разработчику необходимо перейти к параметру конфигурации «Разработка — Разрешение интерфейса — Веб-служба — Веб-учетная запись — Веб-авторизация для получения основной информации о пользователе» на официальном веб-сайте официальной платформы. и измените доменное имя обратного вызова авторизации. Обратите внимание, что здесь указывается доменное имя (строка), а не URL-адрес, поэтому не добавляйте заголовки протокола, такие как http://;

  2. Спецификация конфигурации доменного имени обратного вызова авторизации — это полное доменное имя. Например, доменное имя, для которого требуется авторизация веб-страницы: www.qq.com. После настройки страница под этим доменным именемwww.qq.com/music.html,www.qq.com/login.htmlОба могут выполнять аутентификацию OAuth2.0. ноpay.qq.com,music.qq.com,qq.com не может выполнить аутентификацию OAuth2.0

Два способа авторизации

WeChat предоставляет два метода авторизации для различных сценариев использования. Авторизация областей через веб-страницыscopeконтроль параметров.

Тихая авторизация

  1. Тихая авторизация: Пользователь автоматически авторизуется после входа на страницу и возвращается на страницу Эта авторизация не воспринимается пользователем. Благодаря этой авторизации мы можем получить толькоopenid, никакой другой информации о пользователе нет.
  2. Сценарии использования: можно использовать сценарии, которые требуют только идентификации пользователя и не требуют сбора другой информации. Такие как голосование, лайки и другие сцены.
  3. scope: snsapi_base

Активная авторизация

  1. Активная авторизация: после входа пользователя на страницу появится всплывающее окно авторизации, требующее ручного согласия. Сторона пытается получить основную информацию о пользователе
  2. Примечание. **Для пользователей, которые подписались на официальную учетную запись**, пользователь входит на страницу авторизации веб-страницы официальной учетной записи из сеанса официальной учетной записи или пользовательского меню, даже еслиscope: snsapi_userinfo, что тоже является тихой авторизацией, и пользователь ее не воспринимает.
  3. scope: snsapi_userinfo

конкретный процесс

  1. Пользователь заходит на страницу и получаетcode
  2. пройти черезcodeВ обмен на веб-авторизациюaccess_tokenиopenid, на этом шаге заканчивается тихая авторизация
  3. пройти черезaccess_tokenПолучить информацию о пользователе

получить код

Предложите пользователям перейти по этой ссылке

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE

После того, как пользователь согласится на авторизацию или автоматическую авторизацию, он перейдет кredirect_url?code=CODE&state=STATEэтот адрес и принести сгенерированныйcode.

codeв обменaccess_tokenБилет можно использовать только один раз, и срок его действия автоматически истекает, если он не используется в течение 5 минут.

Параметр Описание

пройти черезcodeВ обмен на веб-авторизациюaccess_token

Обратите внимание, что здесьaccess_tokenиОснова, необходимая для вызова общедоступного API платформыaccess_tokenНе то же самое, просто то же имя.

Этот шаг выполняется на стороне сервера и требует общедоступной учетной записи.secret,access_tokenЕго также нельзя передать клиенту.

интерфейс запроса

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

возвращение

{ 
  "access_token":"ACCESS_TOKEN",
  "expires_in":7200,
  "refresh_token":"REFRESH_TOKEN",
  "openid":"OPENID",
  "scope":"SCOPE" 
}

Получить информацию о пользователе (область должна быть snsapi_userinfo)

Когда область авторизации веб-страницыsnsapi_userinfo, разработчик проходитaccess_tokenиopenidПолучить информацию о пользователе.

интерфейс запроса

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

возвращение

{    
  "openid": "OPENID",
  "nickname": "NICKNAME",
  "sex": "1",
  "province": "PROVINCE"
  "city": "CITY",
  "country": "COUNTRY",
  "headimgurl":    "http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
  "privilege": [ "PRIVILEGE1" "PRIVILEGE2"     ],
  "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}

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

Официальный документ авторизации веб-страницы WeChat