通过 Bing Ads API 开始使用 PHP

若要开始使用 PHP 开发Bing Ads API 应用程序,可以从 提供的示例 开始,或按照 Web桌面 应用程序的应用程序演练之一进行操作。 这些示例是使用 Bing Ads PHP SDK 开发的,并使用 PHP 7.0.6 运行。 你应该能够使用其他版本的 PHP (大于 5.6) 、包和操作系统。 但是,可能需要更改代码和配置的某些部分。 有关如何设置 PHP 开发环境以使用 Web 服务的信息,请参阅工具的文档。 还应在 PHP.ini 文件中启用 SOAP 和 OpenSSL 扩展。 启用 curl 扩展以运行批量上传示例。

extension=php_soap.dll
extension=php_openssl.dll
extension=php_curl.dll

你将需要具有在 生产沙盒中访问Microsoft广告的用户凭据。 对于生产环境,需要 生产开发人员令牌。 所有沙盒客户端都可以使用通用沙盒开发人员令牌,即 BBD37VB98。 有关详细信息,请参阅 Bing Ads API沙盒入门。

若要通过 OAuth 进行身份验证,还必须注册应用程序并获取相应的客户端标识符。 如果要开发 Web 应用程序,还需要记下客户端密码和重定向 URI。 有关在生产环境中注册应用程序和授权代码授予流的详细信息,请参阅 使用 OAuth 进行身份验证和使用 SDK 进行身份验证。 尽管在生产环境中必须使用自己的应用程序 ID (即客户端 ID) ,但所有Microsoft广告客户都可以使用沙盒中的公共“教程示例应用”客户端 ID,即 00001111-aaaa-2222-bbbb-3333cccc4444。 有关详细信息,请参阅 沙盒

安装 SDK

可以使用 Composer 包管理器安装 Bing Ads PHP SDK 以从 Packagist 提取,也可以从 GitHub 克隆源。 本指南介绍如何使用 Composer 获取最新版本的 Bing Ads PHP SDK。

  1. 下载并安装 Composer。 Microsoft Windows 用户还应将 composer.phar 添加到 PATH 变量。

  2. 打开命令提示符并键入 composer require microsoft/bingads

    注意

    未将 composer.phar 添加到 PATH 的 Windows 用户需要改为键入 php composer.phar require microsoft/bingads

  3. 若要获取以后的更新,请键入 composer update。 如果 packagist 中提供了任何更新,则 composer 将安装最新版本。

演练

安装 Bing Ads PHP SDK 后,可以浏览 Bing Ads API 代码示例,在 GitHub 上下载示例,或者按照 Web桌面 应用程序的应用程序演练之一进行操作。

使用 SoapVar

若要发送继承自基类的复杂类型,必须将对象编码为 SoapVar。 在以下示例中,从 CampaignCriterion) 派生的 BiddableCampaignCriterion (、派生自 Criterion) 的 LocationCriterion (以及派生自 CriterionBid) 的 BidMultiplier (都进行了编码。

$campaignCriterions = array();

$locationBiddableCampaignCriterion = new BiddableCampaignCriterion();
$locationBiddableCampaignCriterion->CampaignId = $campaignId;
$locationCriterion = new LocationCriterion();
$locationCriterion->LocationId = 190;
$encodedLocationCriterion = new SoapVar($locationCriterion, SOAP_ENC_OBJECT, 'LocationCriterion', $GLOBALS['CampaignProxy']->GetNamespace());
$locationBiddableCampaignCriterion->Criterion = $encodedLocationCriterion;
$bidMultiplier = new BidMultiplier();
$bidMultiplier->Multiplier = 0;
$encodedBidMultiplier = new SoapVar($bidMultiplier, SOAP_ENC_OBJECT, 'BidMultiplier', $GLOBALS['CampaignProxy']->GetNamespace());
$locationBiddableCampaignCriterion->CriterionBid = $encodedBidMultiplier;

$encodedCriterion = new SoapVar($locationBiddableCampaignCriterion, SOAP_ENC_OBJECT, 'BiddableCampaignCriterion', $GLOBALS['CampaignProxy']->GetNamespace());
$campaignCriterions[] = $encodedCriterion;

如果不将 CriterionBid 编码为具体类型 BidMultiplier,则生成的请求 SOAP 是一个空的抽象 CriterionBid 元素。 这将导致序列化异常,并显示消息“无法创建抽象类”。

<ns1:CriterionBid>

必须使用复杂类型(例如 BidMultiplier)正确编码对象。

<ns1:CriterionBid xsi:type="ns1:BidMultiplier">
    <ns1:Type xsi:nil="true" />
    <ns1:Multiplier>0</ns1:Multiplier>
</ns1:CriterionBid>

每个数据对象的参考文档指定复杂类型是否派生自基类型,例如,请参阅 BiddableCampaignCriterionLocationCriterionBidMultiplier

WSDL 还定义了层次结构,例如,以下 BidMultiplier 定义。

<xs:complexType name="BidMultiplier">
  <xs:complexContent mixed="false">
    <xs:extension base="tns:CriterionBid">
      <xs:sequence>
        <xs:element minOccurs="0" name="Multiplier" type="xs:double"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>
<xs:element name="BidMultiplier" nillable="true" type="tns:BidMultiplier"/>

另请参阅

Bing Ads API 客户端库
Bing Ads API 代码示例
Bing Ads API Web 服务地址
处理服务错误和异常
沙盒