This repository has been archived by the owner on Aug 3, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 27
自定义refresh_token
wangyi edited this page Dec 22, 2016
·
1 revision
定义了AuthorizerRefreshToken必须要去实现的三个方法:
- getRefreshToken($authorizerAppId) 通过公众号ID获取refresh_token(刷新access_token时要使用)
- setRefreshToken($authorizerAppId, $authorizerRefreshToken) 存储公众号的refresh_token(授权或者更新授权事件时使用)
- removeRefreshToken($authorizerAppId) 删除公众号的refresh_token(取消授权时使用)
<?php
namespace Chunhei2008\EasyOpenWechat\Contracts;
interface AuthorizerRefreshTokenContract
{
/**
* get refresh token by app id
* @param $authorizerAppId
*
* @return mixed
*/
public function getRefreshToken($authorizerAppId);
/**
*
* set refresh token by app id
* @param $authorizerAppId
* @param $authorizerRefreshToken
*
* @return mixed
*/
public function setRefreshToken($authorizerAppId, $authorizerRefreshToken);
/**
* remove refresh token by app id
* @param $authorizerAppId
*
* @return mixed
*/
public function removeRefreshToken($authorizerAppId);
}
<?php
namespace Chunhei2008\EasyOpenWechat\Core;
use Chunhei2008\EasyOpenWechat\Contracts\AuthorizerRefreshTokenContract;
use Chunhei2008\EasyOpenWechat\Support\Log;
use Chunhei2008\EasyOpenWechat\Traits\CacheTrait;
use Doctrine\Common\Cache\Cache;
class AuthorizerRefreshTokenDB implements AuthorizerRefreshTokenContract
{
/**
*
* get refresh token
*
* @param $authorizerAppId
*
* @return mixed|string
*/
public function getRefreshToken($authorizerAppId)
{
// select refresh_token from db by app id
Log::debug('Get refresh token from cache:', [$authorizerAppId, $authorizerRefreshToken]);
return $authorizerRefreshToken;
}
/**
* set refresh token
*
* @param $authorizerAppId
* @param $authorizerRefreshToken
*/
public function setRefreshToken($authorizerAppId, $authorizerRefreshToken)
{
// insert or update refresh token by app id
Log::debug('Set refresh token:', [$authorizerAppId, $authorizerRefreshToken]);
}
/**
*
* remove refresh token
*
* @param $authorizerAppId
*/
public function removeRefreshToken($authorizerAppId)
{
// delete refresh token by app id
Log::debug('Remove refresh token:', [$authorizerAppId]);
}
}
<?php
namespace Chunhei2008\EasyOpenWechat\Foundation\ServiceProviders;
use Chunhei2008\EasyOpenWechat\Core\AuthorizerRefreshTokenDB;
use Pimple\Container;
use Pimple\ServiceProviderInterface;
class AuthorizerRefreshTokenDBServiceProvider implements ServiceProviderInterface
{
public function register(Container $pimple)
{
$pimple['authorizer_refresh_token'] = function ($pimple) {
return new AuthorizerRefreshTokenDB();
};
}
}
$config = [
'debug' => true,
'component_app_id' => 'wxd954……', //第三方平台app id
'component_app_secret' => 'a7a48d271…………', //第三方平台app secret
'token' => 'easy-open-wechat-token', //公众号消息校验Token
'aes_key' => '90ID6sSTuY……Uh6BWDct', //公众号消息加解密Key
'redirect_uri' => 'http://yourhostname/authcallback.php', //公众号授权回调页面
'log' => [
'level' => 'debug',
'file' => '/tmp/easyopenwechat.log',
],
];
$providers = [
AuthorizerRefreshTokenDBServiceProvider:class
];
$app = new \Chunhei2008\EasyOpenWechat\Foundation\Application($config);
//添加服务覆盖refresh_token
$app->addProviders($providers);