задний план
Когда пользователь обращается к сторонней веб-странице в клиенте WeChat, официальная учетная запись может получить основную информацию о пользователе через механизм авторизации веб-страницы WeChat, а затем реализовать бизнес-логику.
настроить
-
Прежде чем официальная учетная запись WeChat запросит авторизацию веб-страницы пользователя, разработчику необходимо перейти к параметру конфигурации «Разработка — Разрешение интерфейса — Веб-служба — Веб-учетная запись — Веб-авторизация для получения основной информации о пользователе» на официальном веб-сайте официальной платформы. и измените доменное имя обратного вызова авторизации. Обратите внимание, что здесь указывается доменное имя (строка), а не URL-адрес, поэтому не добавляйте заголовки протокола, такие как http://;
-
Спецификация конфигурации доменного имени обратного вызова авторизации — это полное доменное имя. Например, доменное имя, для которого требуется авторизация веб-страницы: 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
контроль параметров.
Тихая авторизация
-
Тихая авторизация: Пользователь автоматически авторизуется после входа на страницу и возвращается на страницу Эта авторизация не воспринимается пользователем. Благодаря этой авторизации мы можем получить только
openid
, никакой другой информации о пользователе нет. - Сценарии использования: можно использовать сценарии, которые требуют только идентификации пользователя и не требуют сбора другой информации. Такие как голосование, лайки и другие сцены.
scope: snsapi_base
Активная авторизация
- Активная авторизация: после входа пользователя на страницу появится всплывающее окно авторизации, требующее ручного согласия. Сторона пытается получить основную информацию о пользователе
- Примечание. **Для пользователей, которые подписались на официальную учетную запись**, пользователь входит на страницу авторизации веб-страницы официальной учетной записи из сеанса официальной учетной записи или пользовательского меню, даже если
scope: snsapi_userinfo
, что тоже является тихой авторизацией, и пользователь ее не воспринимает. scope: snsapi_userinfo
конкретный процесс
- Пользователь заходит на страницу и получает
code
- пройти через
code
В обмен на веб-авторизациюaccess_token
иopenid
, на этом шаге заканчивается тихая авторизация - пройти через
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"
}