WeChat Public Platform недавно запустила аутентификацию WeChat, и вы можете получить расширенные разрешения на интерфейс после аутентификации. Многие друзья терпят неудачу или не могут понять их содержание при его использовании. Сегодня редактор нового технологического канала предоставляет вам авторизацию веб -страницы разработки WeChat для получения основной информации пользователя.
1. Что такое OAuth2.0
Официальный веб -сайт: http://oauth.net/ http://oauth.net/2/
Авторитетное определение: OAuth - это открытый протокол, позволяющий обеспечить безопасную авторизацию в простом и стандартном методе из веб -приложений, мобильных и настольных приложений.
OAuth-это открытое соглашение, которое позволяет пользователям получать частные ресурсы (такие как личная информация пользователей, фотографии, видео, списки контактов), хранящиеся сторонними приложениями безопасным и стандартным способом (например, личная информация пользователей, фотографии, видео, списки контактов), хранящиеся на веб-сайте, мобильных или настольных приложениях без предоставления пользователя и пароля сторонним приложениям.
OAuth 2.0 является следующей версией протокола OAuth, но не является обратной совместимой с OAuth 1.0. OAuth 2.0 фокусируется на простоте разработчиков клиентов, одновременно предоставляя выделенный процесс сертификации для веб -приложений, настольных приложений и мобильных телефонов, а также устройств гостиной.
OAuth позволяет пользователям предоставлять токен вместо имени пользователя и пароля для доступа к данным, которые они хранят в конкретном поставщике услуг. Каждый токен разрешает конкретный веб -сайт (например, веб -сайт редактирования видео) для доступа к конкретному ресурсу (например, просто видео в определенном альбоме) в течение определенного периода времени (например, в течение следующих 2 часов). Таким образом, OAuth позволяет пользователям авторизовать сторонние веб-сайты для доступа к информации, которую они хранят на другом поставщике услуг, не делясь всем своим разрешениями на доступ или их данным.
Sina Weibo API в настоящее время также использует OAuth 2.0.
2. Авторизация публичной платформы WeChat OAuth2.0
Подробные шаги для авторизации публичной платформы WeChat OAuth2.0 заключаются в следующем:
1. Пользователи следуют общественным аккаунтам WeChat.
2. Общественная учетная запись WeChat предоставляет URL -адрес страницы авторизации запроса пользователя.
3. Пользователь нажимает на URL -адрес страницы авторизации и инициирует запрос на сервер.
4. Сервер спрашивает пользователя, согласен ли он авторизировать общедоступную учетную запись WeChat (такого шага нет, когда область SNSAPI_BASE)
5. Пользователь соглашается (нет такого шага, когда область SNSAPI_BASE)
6. Сервер передает код в общедоступную учетную запись WeChat через обратный вызов
7. Получить код на общественном аккаунте WeChat
8. WeChat Public Account запрашивает токен доступа к серверу через код
9. Сервер возвращает токен доступа и OpenID в общедоступную учетную запись WeChat
10. WeChat Public Account запрашивает информацию пользователя на сервере через токен доступа (нет такого шага, когда Scope IS SNSAPI_BASE)
11. Сервер отправляет информацию пользователя обратно в общедоступную учетную запись WeChat (нет такого шага, когда Scope IS SNSAPI_BASE)
Используемые Appid и AppSecret можно найти в идентификаторе разработчика Центра-разработчика.
1. Настройте доменное имя страницы обратного вызова авторизации
После ввода в общедоступную платформу WeChat в свою очередь введите таблицу Центра-промежутка разработчиков, найдите авторизацию веб-страницы для получения основной информации пользователя.
Нажмите Редактировать справа.
Спецификация конфигурации доменного имени для обратного вызова авторизации является полным доменным именем и не включает HTTP. Например, доменное имя, которое требует веб -авторизации: www.qq.com. После конфигурации страницы под этим доменным именем http://www.qq.com/music.html и http://www.qq.com/login.html могут выполнить аутентификацию OAuth2.0. Тем не менее, http://pay.qq.com, http://music.qq.com и http://qq.com не могут выполнить аутентификацию OAuth2.0.
Здесь мы заполняем вторичное доменное имя приложения Baidu от Fangbi Studio в качестве Mascot.duapp.com
Если ваш URL не занесен в черный список, он появится наверху
Затем конфигурация доменного имени добилась успеха.
2. Авторизация пользователя и получить код
В корневом каталоге доменного имени создайте новый файл, назовите его oauth2.php, а его содержание
<? phpif (isset ($ _ get ['code'])) {echo $ _get ['code'];} else {echo "no code";}?>Давайте сначала поймем, как построить страницу авторизации:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid&redirect_uri=redirect_uri&response_type=code&scope=scope&state=state#wechat_redirect
Описание параметра
| параметр | должен | иллюстрировать |
|---|---|---|
| аппдасир | да | Уникальный идентификатор официального счета |
| redirect_uri | да | Перенаправленный адрес ссылки на вызов после авторизации |
| response_type | да | Возврат тип, пожалуйста, заполните код |
| объем | да | Примените сферу авторизации, SNSAPI_BASE (страница без разрешения не появляется, просто прыгает, можно получить только пользователь OpenID), SNSAPI_USERINFO (страница всплывающего авторизации, вы можете получить прозвище, пол и местоположение через OpenID. И, даже если вы не будете следить за тем, как пользователь разрешает его, ваша информация может быть получена). |
| состояние | нет | После перенаправления будут включены параметры состояния, и разработчики могут заполнять любые значения параметров. |
| #wechat_redirect | нет | Откройте ссылку непосредственно на WeChat и не заполняйте этот параметр. Этот параметр должен быть включен при выполнении перенаправления страницы 302 |
Область авторизации приложения: поскольку snsapi_base может получить только OpenID, это не имеет большого смысла, поэтому мы используем snsapi_userinfo.
Адрес обратного вызова: заполнить как файл адрес oauth2.php, только что загруженный,
Параметры состояния: любое число, заполните 1 здесь
URL -адрес запроса конструкции выглядит следующим образом:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888 8&redirect_uri=http: //mascot.duapp.com/oauth2.php&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect
Отправьте эту ссылку на WeChat, чтобы открыть в браузере WeChat. Здесь используйте ссылку, чтобы инкапсулировать ее следующим образом:
Добро пожаловать, чтобы следовать за [Jinbao], что может сделать вам более удобным для вас, чтобы найти общественное питание, одежду, универмаги и магазины салона красоты, которые соответствуют вашим желаниям рядом с вами.
<а href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx88888888888888&redirect_uri=http: //mascot.duapp.com/oauth2.php&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect"> Здесь, чтобы связать </a>
Техническая поддержка Fangbi Studio
Покажите следующее в WeChat
После нажатия на привязку появляется интерфейс авторизации приложения
Выберите «Разрешить», нажмите
Прыгайте на страницу Auth2.php и выполните
echo $ _get ['code']
Код отображается на интерфейсе. В настоящее время ссылка получается путем копирования ссылки в кнопке в верхнем правом углу:
http://mascot.duapp.com/oauth2.php?code=00b788e3b42043c8459a57a8d8ab5d9f&state=1
Мы успешно получили код.
Примечание. Если такой интерфейс появляется во время привязки, это означает, что параметры неверны, и вам нужно вернуться назад и проверить параметры.
3. Используйте код для Exchange Access_token
Как построить страницу Access_token для обмена на веб -авторизацию:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code=code&grant_type=authorization_code
Описание параметра
| параметр | Это необходимо | иллюстрировать |
|---|---|---|
| аппдасир | да | Уникальный идентификатор официального счета |
| Секрет | да | Официальное приложение для учетной записи |
| код | да | Заполните параметры кода, полученные на первом этапе |
| Grant_type | да | Заполнить как Authorization_code |
Код: заполните здесь как значение, полученное на предыдущем этапе
URL -адрес запроса конструкции выглядит следующим образом:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx8888888888888&secret=aaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&code=00b788e3b42043c8459a57a8d8ab5d9f&grant_type=authorization_code
Вы можете выполнить этот оператор непосредственно в браузере:
(
Вот ключ, который должен получить код данных JSON через вышеуказанный URL -адрес
$ ch = curl_init (); curl_setopt ($ ch, curlopt_url, $ url); curl_setopt ($ ch, curlopt_returntransfer, 1); // Требовать, чтобы результат была строкой и выводом на экран curl_setopt ($ ch, curlopt_header, 0); // Не HTTP заголовок Ускоряйте эффективность curl_setopt ($ ch, curlopt_useragent, 'mozilla/5.0 (совместимый; msie 5.01; Windows nt 5.0)'); curl_setopt ($ ch, curlopt_timeout, 15); curl_setopt ($ ch, curlopt_ssl_verifypeer, false); // https запрос не проверяет сертификаты и хост curl_setopt ($ ch, curlopt_ssl_verifyhost, false); $ output = curl_exec ($ ch); curl_close ($ ch); $ jsondecode = json_decode ($ output); // кодировать строки в формате json $ array = get_object_vars ($ jsondecode); // конвертируется в массив // Две красные линии являются ключевым моментом, для HTTPS я боролся более чем на один день Echo $ Array;
)
Получите следующие данные JSON:
{"access_token": "OEZXCEIIBSKSXW0EOYLIASR0GMYD1AWCFFDHB4FHS_KKF2COTGJ2CBNUKQVJ-G0ZWEE5-UBJ BZ941EOPQDQY5SS_GCS2Z40DNVU99Y5AI1BW2UQN--2JXOBLIM5D6L9RIMVM8VG8CBAILPWA8VW ", "expires_in": 7200, "refresh_token": "OEZXCEIIBSKSXW0EOYLIASR0GMYD1AWCFFDHB4FHS_KKF2COTGJ2CBNUKQVJ-G0ZWEE5-UBJ Bz941eopqdqy5s_gcs2z40dnvu99y5czpawzksiuz_6x_tfkloxlu7kdkm2232wdxb3msuzq1a ", «OpenID»: «olvppjqs9bhvzwpj5a-vtyax3glc», «Scope»: «snsapi_userinfo»,}}Формат данных интерпретируется следующим образом:
| параметр | описывать |
|---|---|
| access_token | Учебные данные по интерфейсу веб -авторизации, примечание. Этот access_token отличается от Access_token, поддерживаемого базовым |
| истекает_ин | Access_token Interface Timeout Timeout, Unit (секунды) |
| represh_token | Пользователь обновление Access_token |
| OpenID | Пользователь уникальный идентификатор. Обратите внимание, что когда пользователи не следуют официальной учетной записи, когда пользователи посещают веб -страницу официальной учетной записи, они также создадут уникальный OpenID для пользователей и официальных учетных записей. |
| объем | Объем авторизации пользователя, разделенный запятой (,) |
Итак, мы успешно обменялись Access_token и Refresh_token через код.
Обновить access_token
В официальном документе упоминается функция освежающего Access_token, но это не обязательно. Вы можете игнорировать его в первый раз, используя его.
Метод запроса URL выглядит следующим образом:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=appid&grant_type=refresh_token&refresh_token=refresh_token
Описание параметра
| параметр | Это необходимо | иллюстрировать |
|---|---|---|
| аппдасир | да | Уникальный идентификатор официального счета |
| Grant_type | да | Заполнить как rupresh_token |
| represh_token | да | Заполните параметр represh_token, полученный через Access_token |
Структура заключается в следующем:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=wx8888888888888 18,grant_type=refresh_token&refresh_token=oezxceiibsksxw0eoy lieasr0gmyd1awcffdhgb4fhs_kkf2cotgj2cbnukqqvj-g0zwee5-ubjbz941eopqdqy5ss_gcs2z40dnvu99y5czpawzksiuz_6x_tfkloxlu7kdkm22222222222222222222222222222222222222222322222222232hespawzksiuz_6x_tfkloxlu7
Выполнить данные JSON в том же формате в браузере
4. Используйте access_token для получения информации пользователя
Метод запроса:
https://api.weixin.qq.com/sns/userinfo?access_token=access_token&openid=openid
Описание параметра
| параметр | описывать |
|---|---|
| access_token | Учебные данные по интерфейсу веб -авторизации, примечание. Этот access_token отличается от Access_token, поддерживаемого базовым |
| OpenID | Уникальный идентификатор пользователя |
URL построен следующим образом:
https://api.weixin.qq.com/sns/userinfo?access_token=oezxceiibsksxw0eoylieasr0gmyd1awcffdhgb4fhs_kkf2cotgj2cbnukqqvj-g0z Wee5-UBJBZ941EOPQDQY5SS_GCS2Z40DNVU99Y5AI1BW2UQN--2JXOBLIM5D6L9RIMVM8VG8CBAILPWA8VW & OPENID = OLVPPJQS9BHVZPJ5A-VTYAX3GLC
Вы можете выполнить этот оператор непосредственно в браузере:
Получите следующие данные JSON:
{"openID": "olvppjqs9bhvzwpj5a-vtyax3glc", "никнам": "fangbi", "sex": 1, "язык": "zh_cn", "City": "Shenzhen", "провинция": "guangdong", "Country": "CN", "" "" "http://wx.qlogo.cn/mmomopen/utpkyf69vabcrdrlbuspsdqn38doibcru6samcsnx5588talvm8pym6jlegzorh67hyzibizpxu4bk1xnwzsxbbs4qpbg18/", ",", ",", ",", ",", ",", ",", ". []}Интерпретация параметра:
| параметр | описывать |
|---|---|
| OpenID | Уникальный идентификатор пользователя |
| прозвище | Пользовательский прозвище |
| секс | Пол пользователя, когда значение составляет 1, оно является мужчина |
| провинция | Провинции заполнены в профиле пользователя |
| город | Город заполнил личную информацию обычных пользователей |
| страна | Страна, такая как Китай, является CN |
| Headimgurl | Пользовательский аватар, последнее значение представляет размер квадратного аватара (есть 0, 46, 64, 96 и 132 значения являются необязательными, а 0 представляет 640*640 квадратный аватар). Этот элемент пуст, когда у пользователя нет аватара. |
| Привилегия | Информация о привилегиях пользователей, массив JSON, такой как пользователь WeChat Woka (ChinaUnicom) |
Это согласуется с моей личной информацией о WeChat
На этом этапе, не введя мою учетную запись и пароль, публичная учетная запись WeChat Jinbao получила мою личную информацию, включая мой прозвище, пол, страна, провинция, город, личный аватар и список привилегий.
Полная сертификация OAuth2 завершена.
3. Подробная демонстрация
Следите за Studio Fangbei (см. Код QR ниже), ответьте «Авторизация», вернитесь к графическому и текстовому сообщению, нажмите на картинку
На странице подтверждения нажмите «Разрешить»
Полученный результат всплывает (изображение подвергается противоугонозскому обработке, поэтому его нельзя отображать напрямую, вы можете загрузить его локально и отобразить его)
Выше приведено информация о веб -разработке авторизации WeChat для получения базовой информации пользователей, веб -авторизации для получения пользовательской информации, а также соответствующая информация будет добавлена в будущем. Спасибо за вашу поддержку на новом технологическом канале!