dmt-software/salesforce-oauth-middleware

用于REST API调用的Salesforce OAuth 2.0中间件

v1.0.0 2018-05-25 10:07 UTC

This package is auto-updated.

Last update: 2024-09-25 07:42:58 UTC


README

Build Status Scrutinizer Code Quality Code Coverage

此授权中间件使用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密码时不提供过期时间或刷新令牌。缓存的访问令牌每小时将被回收(由该中间件处理)。这可能以后会改变,以更好地适应实施(我欢迎建议)。