1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/shinn_lancelot-WechatOauthProxy

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

WechatOauthProxy

Issues Star Fork License GitHub Release

Основные функции

  • Прокси-сервер для авторизации WeChat и передачи данных
Исходный запрос отправляется методом GET на адрес прокси-сервера для авторизации WeChat. Прокси-сервер получает параметры и направляет запрос к серверу WeChat для получения code или access_token с openid. В конце прокси-сервер возвращает данные обратно источнику запроса, что позволяет избежать ограничения однорангового домена при использовании API авторизации WeChat.

Другие возможности

  • Ограничение источников запросов к прокси-интерфейсу
  • Создание файла проверки домена обратного вызова (в формате .txt) для привязки доменного имени прокси-сервера к списку доменов обратного вызова WeChat

Установка и использование

  1. Проект поддерживает только среду PHP. Размещайте проект на сервере (примеры запросов находятся в папке demo и могут быть удалены).

  2. Нужно использовать новый домен (например: oauth.xx.com), который будет разрешен к публичному IP-адресу вашего сервера. Этот домен будет использоваться как домен обратного вызова для авторизации WeChat. Измените конфигурацию веб-сервера, чтобы указать этот домен к корневой директории проекта, а затем перезапустите веб-сервер.

  3. Откройте страницу http://oauth.xx.com/login.php, введите имя пользователя и пароль для входа в административную панель (имя пользователя: admin, пароль: 123456). Нажмите кнопку "Добавить содержимое файла проверки домена обратного вызова", заполните поле ввода содержимым файла проверки домена обратного вызова (формат .txt), нажмите кнопку "Отправить". После успешной отправки нажмите кнопку "Скопировать домен обратного вызова WeChat" для копирования домена обратного вызова (oauth.xx.com).

  4. После успешного копирования перейдите в платформу WeChat и установите скопированный домен обратного вызова (oauth.xx.com).

  5. Теперь адрес прокси-сервера (GET): http://oauth.xx.com/index.php.
    Параметры запроса:

    Параметр Описание Обязательность Примечания
    app_id ID публичного аккаунта Да
    scope Область действия авторизации WeChat Да Возможные значения: "snsapi_base" или "snsapi_userinfo"
    redirect_uri Адрес обратного вызова авторизации Да Обычно это адрес, с которого был инициирован запрос авторизации, он должен быть закодирован urlencode
    proxy_scope Область действия операции прокси-сервера, используется для определения того, требуется ли code или access_token Нет Возможные значения: "code" или "access_token", значение по умолчанию - "code"
    app_secret Секретный ключ публичного аккаунта Нет Если proxy_scope равно "access_token", то этот параметр также необходим
    oauth_type Тип авторизации, 1: публичная платформа, 2: открытая платформа Нет Возможные значения: 1 или 2, значение по умолчанию - 1
    state Параметр переадресации Нет
  6. Вы можете получить доступ к адресу запроса и его параметрам (используйте функцию header()). Если параметр proxy_scope равен "code", ответ будет содержать параметры code и state. Если параметр proxy_scope равен "access_token", ответ будет содержать параметры access_token и openid.

Примеры использования интерфейсов

  • Получение code

    1. Адрес проекта прокси-сервера: "http://oauth.xx.com/index.php".
    2. Сначала установите домен обратного вызова авторизации публичного аккаунта на "oauth.xx.com".
    3. На странице "http://request.xx.com/index.php" выполните запрос к адресу прокси-сервера: "http://oauth.xx.com/index.php?app_id=APPID&scope=SCOPE&redirect_uri=REDIRECT_URI".
    4. При нормальной работе вы окажетесь на странице "http://request.xx.com/index.php?code=CODE&state=STATE".
    5. После получения code используйте API авторизации WeChat для получения access_token и информации о пользователе.
  • Получение access_token

    1. Адрес проекта прокси-сервера: "http://oauth.xx.com/index.php".
    2. Сначала установите домен обратного вызова авторизации публичного аккаунта на "oauth.xx.com".
    3. На странице "http://request.xx.com/index.php" выполните запрос к адресу прокси-сервера: "http://oauth.xx.com/index.php?app_id=APPID&scope=SCOPE&proxy_scope=access_token&app_secret=APPSECRET&redirect_uri=REDIRECT_URI".
    4. При нормальной работе вы окажетесь на странице "http://request.xx.com/index.php?access_token=ACCESS_TOKEN&openid=OPENID".
    5. Для получения информации о пользователе используйте access_token и openid через API авторизации WeChat.

Другие примечания* Access token в этом проекте не связан с access token для базовых интерфейсов WeChat; он используется только для авторизации WeChat.

  • Если вам нужен только code, учтите необходимость кэширования данных access token.
  • Если вам нужен access token, нет необходимости отдельно кэшировать данные access token. Если проект установлен на Linux-сервере, потребуется создать каталоги и файлы, поэтому права доступа к проекту должны быть изменены. Также необходимо включить сессии и cookies в среде PHP. Кроме того, для передачи параметра app secret при получении access token рекомендуется использовать HTTPS для снижения рисков утечки секретного ключа.
  • В административной панели можно добавить безопасные доменные имена для запросов (то есть источники запросов, только запросы от этих доменов будут обрабатываться). Без добавления безопасных доменных имен ограничений нет.
  • Для повышения безопасности рекомендуется своевременно менять пароли администратора.
  • Пароли учетных записей администратора хранятся в common/user.json. Хотя пароли зашифрованы, для обеспечения безопасности рекомендуется использовать веб-сервер (например, Apache, Nginx) для ограничения прямого доступа к json-файлам.
Apache (httpd.conf)
<FilesMatch \.(json)$>
    Order allow,deny
    Deny from all
</FilesMatch>
Nginx (nginx.conf)
location ~ .*\.(json)$ {
    deny all
}

Тестовый адрес

Использует тестовый аккаунт WeChat для авторизации, предназначен для тестирования и обучения. После входа просканируйте QR-код для подписки на тестовый аккаунт (лимит подписчиков составляет 100 человек).

Адрес прокси-сервера: http://wxoauth.hillpy.com/index.php

Адрес запроса: http://test.hillpy.com/wxoauth/index.php

test

Адрес репозитория

Github

Gitee

Лицензия

MIT

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Авторизация через прокси-сервер для пересылки авторизаций в WeChat Official Account. Развернуть Свернуть
MIT
Отмена

Обновления (21)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/shinn_lancelot-WechatOauthProxy.git
git@api.gitlife.ru:oschina-mirror/shinn_lancelot-WechatOauthProxy.git
oschina-mirror
shinn_lancelot-WechatOauthProxy
shinn_lancelot-WechatOauthProxy
master