dmt-software / salesforce-oauth-middleware
用于REST API调用的Salesforce OAuth 2.0中间件
v1.0.0
2018-05-25 10:07 UTC
Requires
Requires (Dev)
- phpunit/phpunit: ^7.1
This package is auto-updated.
Last update: 2024-09-25 07:42:58 UTC
README
此授权中间件使用OAuth grant_type 密码 进行认证和授权,以便对Salesforce REST API进行请求。
安装
composer require dmt-software/salesforce-oauth-middleware
使用
<?php use DMT\Salesforce\Auth\Authorization\SalesforceAuthorization; use DMT\Auth\AuthorizationMiddleware; use GuzzleHttp\Client; use GuzzleHttp\Handler\CurlHandler; use GuzzleHttp\HandlerStack; use GuzzleHttp\Middleware; use Stevenmaguire\OAuth2\Client\Provider\Salesforce; $oAuthProvider = new Salesforce( [ 'clientId' => 'YourCustomedKey', 'clientSecret' => 'YourCustomerSecret', 'redirectUri' => 'https://', // wont be visited for grant_type password ] ); $authMiddleware = new AuthorizationMiddleware( new SalesforceAuthorization($oAuthProvider, 'YourUsername', 'YourPasswordAmdSecret') ); $stack = new HandlerStack(); $stack->setHandler(new CurlHandler()); $stack->push(Middleware::mapRequest($authMiddleware)); $client = new Client([ 'handler' => $stack ]); // request will be authorized and routed to your client (sub)domain according to the instance_url received from OAuth $response = $client->get('https://salesforce.com/services/data/v26.0/sobjects/Account');
缓存
为了重用访问令牌,此中间件可以配置为使用PSR-16缓存实现。
<?php use DMT\Salesforce\Auth\Authorization\SalesforceAuthorization; use DMT\Auth\AuthorizationMiddleware; use Psr\SimpleCache\CacheInterface; use Stevenmaguire\OAuth2\Client\Provider\Salesforce; /** @var Salesforce $oAuthProvider */ /** @var CacheInterface $dataCache */ $authMiddleware = new AuthorizationMiddleware( new SalesforceAuthorization($oAuthProvider, 'YourUsername', 'YourPasswordAmdSecret', $dataCache) );
注意:目前Salesforce在使用grant_type密码时不提供过期时间或刷新令牌。缓存的访问令牌每小时将被回收(由该中间件处理)。这可能以后会改变,以更好地适应实施(我欢迎建议)。