salesforce-mc/fuel-sdk-php

此包已被废弃且不再维护。未建议替代包。

PHP版的Salesforce Marketing Cloud Fuel SDK

v1.4.0 2019-08-21 13:35 UTC

README

PHP版的Salesforce Marketing Cloud Fuel SDK

PHP版的Salesforce Marketing Cloud Fuel SDK免费使用,但并非官方Salesforce Marketing Cloud产品,应视为社区项目。此SDK未经过官方测试或文档化。有关任何PHP版的Salesforce Marketing Cloud Fuel SDK的帮助,请咨询Salesforce论坛或此仓库的问题部分。此SDK不支持Salesforce Marketing Cloud支持。

概述

PHP版的Fuel SDK提供对Salesforce Marketing Cloud的Fuel API Family服务的便捷访问,包括一系列REST和SOAP API。这些API通过如数组/散列表等常见集合类型提供对Salesforce Marketing Cloud(之前称为ExactTarget)功能的访问。

1.4.0版本中的新特性

除了1.3.0版本中添加的OAuth2功能外,我们现在还添加了对使用OAuth2进行公共/网络应用认证的支持。

  • OAuth2的示例配置
    'appsignature' => 'none', 
    'clientid' => '<CLIENT_ID>',
    'clientsecret' => '<CLIENT_SECRET>',
    'defaultwsdl' => 'https://webservice.exacttarget.com/etframework.wsdl',
    'xmlloc' => '/some/path/to/cache/ExactTargetWSDL.xml',
    'baseAuthUrl' => '<AUTH TENANT SPECIFIC ENDPOINT>',
    'baseSoapUrl' => '<SOAP TENANT SPECIFIC ENDPOINT>',
    'baseUrl' => '<REST TENANT SPECIFIC ENDPOINT>',
    'useOAuth2Authentication' => true,
    'applicationType' => 'public|web'
    'redirectURI' => 'REDIRECT_URL_FOR_YOUR_APP'
    'authorizationCode' => 'AUTHORIZATION_CODE_RECEIVED_FROM_AUTHORIZE_UI_CALL'
    'accountId' => <TARGET_ACCOUNT_ID>,
    'scope' => '<PERMISSION_LIST>'
  • 示例:将配置作为参数传递给ET_Client构造函数
  $myclient = new ET_Client(
    true,
    true, 
    array(
           'appsignature' => 'none', 
           'clientid' => '<CLIENT_ID>',
           'clientsecret' => '<CLIENT_SECRET>',
           'defaultwsdl' => 'https://webservice.exacttarget.com/etframework.wsdl',
           'xmlloc' => '/some/path/to/cache/ExactTargetWSDL.xml',
           'baseAuthUrl' => '<AUTH TENANT SPECIFIC ENDPOINT>',
           'baseSoapUrl' => '<SOAP TENANT SPECIFIC ENDPOINT>',
           'baseUrl' => '<REST TENANT SPECIFIC ENDPOINT>',
           'useOAuth2Authentication' => true,
           'applicationType' => 'public|web'
           'redirectURI' => 'REDIRECT_URL_FOR_YOUR_APP'
           'authorizationCode' => 'AUTHORIZATION_CODE_RECEIVED_FROM_AUTHORIZE_UI_CALL'
           'accountId' => <TARGET_ACCOUNT_ID>,
           'scope' => '<PERMISSION_LIST>'
    )
  );

1.3.0版本

  • 添加了对OAuth2认证的支持 - 更多信息
  • 要启用OAuth2认证,请在config.php文件中将'useOAuth2Authentication' => true设置为true,或者将其传递给ET_Client构造函数的'params'参数。
  • OAuth2的示例配置
    'appsignature' => 'none', 
    'clientid' => '<CLIENT_ID>',
    'clientsecret' => '<CLIENT_SECRET>',
    'defaultwsdl' => 'https://webservice.exacttarget.com/etframework.wsdl',
    'xmlloc' => '/some/path/to/cache/ExactTargetWSDL.xml',
    'baseAuthUrl' => '<AUTH TENANT SPECIFIC ENDPOINT>',
    'baseSoapUrl' => '<SOAP TENANT SPECIFIC ENDPOINT>',
    'baseUrl' => '<REST TENANT SPECIFIC ENDPOINT>',
    'useOAuth2Authentication' => true,
    'accountId' => <TARGET_ACCOUNT_ID>,
    'scope' => '<PERMISSION_LIST>'
  • 示例:将配置作为参数传递给ET_Client构造函数
  $myclient = new ET_Client(
    true,
    true, 
    array(
        'appsignature' => 'none',
        'clientid' => '<CLIENT_ID>',
        'clientsecret' => '<CLIENT_SECRET>',
        'defaultwsdl' => 'https://webservice.exacttarget.com/etframework.wsdl',
        'xmlloc' => '/some/path/to/cache/ExactTargetWSDL.xml',
        'baseAuthUrl' => '<AUTH TENANT SPECIFIC ENDPOINT>',
        'baseSoapUrl' => '<SOAP TENANT SPECIFIC ENDPOINT>',
        'baseUrl' => '<REST TENANT SPECIFIC ENDPOINT>',
        'useOAuth2Authentication' => true, 
        'accountId' => '<TARGET_ACCOUNT_ID>', 
        'scope' => '<PERMISSION_LIST>'
    )
  );

1.2.0版本

要求

PHP版本 >=5.6.24

扩展

  • openssl
  • SOAP
  • curl

API文档

http://salesforce-marketingcloud.github.io/FuelSDK-PHP/index.html

安装

手动安装

下载项目后,将config.php.template文件重命名为config.php。最重要的是,您还需要手动下载所有依赖并相应地包含它们。这就是我们强烈建议您使用composer的原因。

Composer

在项目composer.json配置文件的require部分添加一个依赖项,要求salesforce-mc/fuel-sdk-php,并更新您的应用程序。

以下是一个示例的composer.json文件

{
    "require": {
        "salesforce-mc/fuel-sdk-php": "1.3.0"
    }
}

入门

编辑config.php文件,以便输入在注册应用程序时提供的ClientID和ClientSecret值。如果您正在为互动营销枢纽构建HubExchange应用程序,则还必须提供应用程序签名(appsignature)。除非ExactTarget明确指示,否则请不要更改默认wsdl配置项的值。

有关在实例化ET_Client对象时如何指定这些值的详细信息,请参阅下面的ET_Client部分。如果您希望将ClientID和ClientSecret值存储在数据库或其他配置存储机制中。

如果您尚未注册应用程序或需要查找应用程序密钥或应用程序签名值,请访问Salesforce Marketing Cloud App Center。

您可以在配置文件和ET_Client构造函数的params参数中定义自己的REST、SOAP和认证基本URL。如果未定义REST & SOAP基本URL,则默认为https://www.exacttargetapis.comhttps://auth.exacttargetapis.com

示例请求

所有通过Fuel SDK公开的ExactTarget对象都以"ET_"开头。首先与ET_List对象一起工作。

获取config.php.template文件(位于vendor/salesforce-mc/下,使用composer),将其重命名为config.php,并更新clientId & clientSecret。
最重要的是,将其放在您的项目根目录中,其中包含composer.json文件。

添加composer自动生成的autoload.php文件,根据您的目录结构更改路径

require __DIR__ . '/../vendor/autoload.php';

添加use语句以引用FuelSdk命名空间

use FuelSdk\ET_Client;
use FuelSdk\ET_List;

接下来,创建ET_Client类的实例

$myclient = new ET_Client();

创建我们想要与之交互的对象类型的实例

$getList = new ET_List();

使用authStub属性将ET_Client关联到对象

$getList->authStub = $myclient;

利用ET_List方法之一

$getResponse = $getList->get();

打印结果以供查看

print_r($getResponse);

示例输出

ET_Get Object
(
    [status] => 1
    [code] => 200
    [message] =>
    [results] => Array
        (
            [0] => stdClass Object
                (
                    [Client] => stdClass Object
                        (
                            [ID] => 1000001
                            [PartnerClientKey] => 
                        )

                    [PartnerKey] =>
                    [CreatedDate] => 2009-06-12T14:42:06.1
                    [ModifiedDate] => 2011-08-17T14:50:30.697
                    [ID] => 1718921
                    [ObjectID] => f41c7d1b-8957-de11-92ee-001cc494ae9e
                    [CustomerKey] => All Subscribers - 578623
                    [ListName] => All Subscribers
                    [Category] => 578623
                    [Type] => Private
                    [Description] => Contains all subscribers
                    [ListClassification] => ExactTargetList
                )

        )

    [request_id] => 5d56a37e-4b13-4f0a-aa13-2e108e60a990
    [moreResults] => 
)

ET_Client类

ET_Client类负责访问ExactTarget API时所需的大部分步骤,包括检索适当的访问令牌、处理令牌状态以管理刷新以及确定API请求的适当端点。为了利用此类提供的优势,在整个会话中使用此类的一个实例。不要为每个请求创建新的ET_Client对象。

ET_Client类接受多个参数

刷新WSDL - 如果设置为true,则会在找到更新时自动下载WSDL的本地副本。

$myclient = new ET_Client(true);

调试 - 如果设置为true,Fuel SDK在幕后进行的所有API请求都将记录到PHP的错误日志中。此选项仅应在开发过程中用于调试,决不应在生产场景中使用。

$myclient = new ET_Client(true, true);

参数 - 允许传递用于SSO的JWT的认证信息,或者如果您更喜欢不使用配置文件选项,则可以传递ClientID/ClientSecret。

示例传递JWT

$myclient = new ET_Client(true, array("jwt" => "JWT Values goes here"));

示例传递ClientID/ClientSecret

$myclient = new ET_Client(true, array("clientid" => "3bjbc3mg4nbk64z5kzczf89n", "clientsecret" => "ssnGAPvZg6kmm775KPj2Q4Cs"));

示例传递REST、认证和SOAP的基本URL

$myclient = new ET_Client(true, array("baseUrl" => "http://rest.endpoint.com", "baseAuthUrl" => "http://auth.endpoint.com", "baseSoapUrl" => "http://soap.endpoint.com"));

响应

Fuel SDK对象上的所有方法都返回一个遵循相同结构的通用对象,无论调用类型如何。该对象包含一组用于显示请求详情的常用属性。

  • 状态:布尔值,表示调用是否成功
  • 代码:HTTP错误代码(SOAP请求始终为200)
  • 消息:文本值,在发生错误时包含更多详情
  • 结果:包含调用方法特有的详情的集合。

获取方法还会返回一个附加值,以指示是否有更多信息可用(可以使用getMoreResults方法检索该信息)

  • 更多结果 - 布尔值,表示在获取请求中是否有更多数据。

示例

在objsamples目录中找到更多示例文件,说明如何使用API公开的ExactTarget对象的全部功能。

示例列表