123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- <?php
- /*
- * This file is part of the overtrue/socialite.
- *
- * (c) overtrue <i@overtrue.me>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
- namespace Overtrue\Socialite\Providers;
- use Symfony\Component\HttpFoundation\Request;
- /**
- * Class WeChatProvider.
- *
- * @see https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419318590&token=&lang=zh_CN [WeChat - 公众开放平台代公众号 OAuth 文档]
- */
- class WeChatOpenPlatformProvider extends WeChatProvider
- {
- /**
- * Component AppId.
- *
- * @deprecated 2.0 Will be removed in the future
- *
- * @var string
- */
- protected $componentAppId;
- /**
- * Component Access Token.
- *
- * @deprecated 2.0 Will be removed in the future
- *
- * @var string
- */
- protected $componentAccessToken;
- /**
- * @var \EasyWeChat\OpenPlatform\AccessToken|array
- */
- protected $credentials;
- /**
- * {@inheritdoc}.
- */
- protected $scopes = ['snsapi_base'];
- /**
- * Create a new provider instance.
- * (Overriding).
- *
- * @param \Symfony\Component\HttpFoundation\Request $request
- * @param string $clientId
- * @param \EasyWeChat\OpenPlatform\AccessToken|array $credentials
- * @param string|null $redirectUrl
- */
- public function __construct(Request $request, $clientId, $credentials, $redirectUrl = null)
- {
- parent::__construct($request, $clientId, null, $redirectUrl);
- $this->credentials = $credentials;
- if (is_array($credentials)) {
- list($this->componentAppId, $this->componentAccessToken) = $credentials;
- }
- }
- /**
- * {@inheritdoc}.
- */
- public function getCodeFields($state = null)
- {
- $this->with(['component_appid' => $this->componentAppId()]);
- return parent::getCodeFields($state);
- }
- /**
- * {@inheritdoc}.
- */
- protected function getTokenUrl()
- {
- return $this->baseUrl.'/oauth2/component/access_token';
- }
- /**
- * {@inheritdoc}.
- */
- protected function getTokenFields($code)
- {
- return [
- 'appid' => $this->clientId,
- 'component_appid' => $this->componentAppId(),
- 'component_access_token' => $this->componentAccessToken(),
- 'code' => $code,
- 'grant_type' => 'authorization_code',
- ];
- }
- /**
- * Get component app id.
- *
- * @return string
- */
- protected function componentAppId()
- {
- return $this->componentAppId ?: $this->credentials->getAppId();
- }
- /**
- * Get component access token.
- *
- * @return string
- */
- protected function componentAccessToken()
- {
- return $this->componentAccessToken ?: $this->credentials->getToken();
- }
- }
|