SDK для входа в WeChat OAuth
Добавьте следующую конфигурацию в файл composer.json
"henter/wechat-oauth" : " dev-master "
Затем используйте Composer для установки SDK.
composer install
Если Packagist не работает или недоступен и SDK не может быть установлен, вы можете использовать Satis или Artifact для его локальной установки. Подробности см. в разделе «Репозитории» в документации Composer.
Скопируйте lib/Henter/WeChat
в каталог проекта, а затем require "/path/to/sdk/OAuth.php"
Если вы используете Composer для установки, вы можете использовать следующий код для автоматической загрузки
require ' vendor/autoload.php ' ;
SDK расположен в глобальном пространстве имен.
use Henter WeChat OAuth
Создайте экземпляр OAuth
для завершения инициализации.
$ oauth = new Henter WeChat OAuth ( $ appid , $ secret );
$appid
и $secret
— это уникальный идентификатор и секретный ключ AppSecret приложения открытой платформы WeChat.
$ oauth = new Henter WeChat OAuth ( $ appid , $ secret );
$ callback_url = ' http://your_site.com/your_callback_url ' ;
$ url = $ oauth -> getAuthorizeURL ( $ callback_url );
Перенаправление на $url
. После того, как пользователь разрешит авторизацию, он будет перенаправлен на $callback_url
с параметрами code
и state
(пример кода не передает параметр state
).
Адрес авторизации по умолчанию — переход на страницу сканирования QR-кода WeChat (применимо к ПК). Этот метод не подходит, если пользователь заходит на веб-страницу в WeChat и нажимает кнопку входа в WeChat. Вам необходимо использовать следующий метод, чтобы получить авторизованный адрес для использования в WeChat:
$ url = $ oauth -> getWeChatAuthorizeURL ( $ callback_url );
Примечание. Это не упоминается в документации открытой платформы WeChat (оно упоминается только в официальной документации платформы учетной записи), но тест показал, что это также применимо к приложениям открытой платформы.
access_token
через параметр code
//获取code参数
$ code = $ _GET [ ' code ' ];
$ oauth = new Henter WeChat OAuth ( $ appid , $ secret );
if ( $ access_token = $ oauth -> getAccessToken ( ' code ' , $ code )){
$ refresh_token = $ oauth -> getRefreshToken ();
$ expires_in = $ oauth -> getExpiresIn ();
$ openid = $ oauth -> getOpenid ();
} else {
echo $ oauth -> error ();
}
Если получение прошло успешно, эти четыре значения необходимо сохранить для последующих вызовов интерфейса, в противном случае информация об ошибке получается через $oauth->error()
access_token
$ oauth = new Henter WeChat OAuth ( $ appid , $ secret , $ access_token );
или
$ oauth = new Henter WeChat OAuth ( $ appid , $ secret );
$ oauth -> setAccessToken ( $ access_token );
Чтобы вызвать информацию о пользователе, необходимо передать openid
$ userinfo = $ oauth -> api ( ' sns/userinfo ' , array ( ' openid ' => $ openid ));
Среди них sns/userinfo
— это тип API. Подробную информацию см. в документе API WeChat.
access_token
с refresh_token
$ oauth = new Henter WeChat OAuth ( $ appid , $ secret );
//以下两种方式一样
$ access_token = $ oauth -> getAccessToken ( ' token ' , $ refresh_token );
或
$ access_token = $ oauth -> refreshAccessToken ( $ refresh_token );
В настоящее время вы можете получить новый refresh_token
через $oauth->getRefreshToken()
В этом SDK нет части, вызывающей исключение. Если при вызове таких методов, как $oauth->getAccessToken()
или $oauth->api()
возвращается false
, это означает сбой. Информация об ошибке получается через $oauth->error()
, поэтому нет необходимости использовать try {} catch {}
для обработки ошибок.
Лицензия MIT (MIT) Авторские права (c) 2014 г., Henter <[email protected]>
Настоящим бесплатно любому лицу, получившему копию данного программного обеспечения и связанных с ним файлов документации («Программное обеспечение»), предоставляется разрешение на работу с Программным обеспечением без ограничений, включая, помимо прочего, права на использование, копирование, изменение, объединение. публиковать, распространять, сублицензировать и/или продавать копии Программного обеспечения, а также разрешать лицам, которым предоставлено Программное обеспечение, делать это при соблюдении следующих условий:
Вышеупомянутое уведомление об авторских правах и данное уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ КОММЕРЧЕСКОЙ ЦЕННОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И НЕНАРУШЕНИЯ ПРАВ, АВТОРЫ ИЛИ ОБЛАДАТЕЛИ АВТОРСКИХ ПРАВ НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ. ПРЕТЕНЗИЯ, ВОЗМЕЩЕНИЕ УБЫТКА ИЛИ ДРУГОЕ ОТВЕТСТВЕННОСТЬ ПО КОНТРАКТУ, ПРАВИЛАМ ИЛИ ДРУГИМ ОБРАЗУ, ВОЗНИКАЮЩАЯ ИЗ, ИЗ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ ДЕЛАМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.