Skip to content

Commit a79b036

Browse files
author
Eric Urban
authored
Merge pull request #132 from BingAds/v13-0-4
support tenant and additional params
2 parents 20f839c + e651112 commit a79b036

21 files changed

+392
-32
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
},
1414
"autoload": {
1515
"psr-4": {
16-
"Microsoft\\BingAds\\": "/src/"
16+
"Microsoft\\BingAds\\": "src/"
1717
}
1818
},
1919
"authors": [

samples/V13/AuthHelper.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
use Microsoft\BingAds\V13\CampaignManagement\AdGroupCriterionType;
2424
use Microsoft\BingAds\V13\CampaignManagement\CampaignCriterionType;
2525
use Microsoft\BingAds\V13\CampaignManagement\CampaignType;
26+
use Microsoft\BingAds\V13\CampaignManagement\CampaignAdditionalField;
2627

2728
// Specify the Microsoft\BingAds\V13\CustomerManagement classes that will be used.
2829

@@ -51,6 +52,11 @@ final class AuthHelper {
5152
CampaignType::Shopping . ' ' .
5253
CampaignType::DynamicSearchAds;
5354

55+
const CampaignAdditionalFields =
56+
CampaignAdditionalField::AdScheduleUseSearcherTimeZone . ' ' .
57+
CampaignAdditionalField::MaxConversionValueBiddingScheme . ' ' .
58+
CampaignAdditionalField::TargetImpressionShareBiddingScheme;
59+
5460
const AllTargetCampaignCriterionTypes =
5561
CampaignCriterionType::Age . ' ' .
5662
CampaignCriterionType::DayTime . ' ' .

samples/V13/BudgetOpportunities.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,6 @@
2424
use Microsoft\BingAds\Samples\V13\AdInsightExampleHelper;
2525
use Microsoft\BingAds\Samples\V13\CampaignManagementExampleHelper;
2626

27-
// Specify the Microsoft\BingAds\V13\CampaignManagement classes that will be used.
28-
use Microsoft\BingAds\V13\CampaignManagement\CampaignAdditionalField;
29-
3027
try
3128
{
3229
// Authenticate user credentials and set the account ID for the sample.
@@ -35,7 +32,8 @@
3532
print("-----\r\nGetCampaignsByAccountId:\r\n");
3633
$getCampaignsByAccountIdResponse = CampaignManagementExampleHelper::GetCampaignsByAccountId(
3734
$GLOBALS['AuthorizationData']->AccountId,
38-
AuthHelper::CampaignTypes
35+
AuthHelper::CampaignTypes,
36+
AuthHelper::CampaignAdditionalFields
3937
);
4038
$campaigns = $getCampaignsByAccountIdResponse->Campaigns;
4139
print("Campaigns:\r\n");

samples/V13/CampaignManagementExampleHelper.php

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1877,6 +1877,10 @@ static function OutputAdExtension($dataObject)
18771877
{
18781878
self::OutputCalloutAdExtension($dataObject);
18791879
}
1880+
if($dataObject->Type === "FilterLinkAdExtension")
1881+
{
1882+
self::OutputFilterLinkAdExtension($dataObject);
1883+
}
18801884
if($dataObject->Type === "ImageAdExtension")
18811885
{
18821886
self::OutputImageAdExtension($dataObject);
@@ -2680,6 +2684,10 @@ static function OutputBiddingScheme($dataObject)
26802684
{
26812685
self::OutputTargetCpaBiddingScheme($dataObject);
26822686
}
2687+
if($dataObject->Type === "TargetImpressionShareBiddingScheme")
2688+
{
2689+
self::OutputTargetImpressionShareBiddingScheme($dataObject);
2690+
}
26832691
if($dataObject->Type === "TargetRoasBiddingScheme")
26842692
{
26852693
self::OutputTargetRoasBiddingScheme($dataObject);
@@ -3833,6 +3841,36 @@ static function OutputArrayOfFileImportOption($dataObjects)
38333841
self::OutputFileImportOption($dataObject);
38343842
}
38353843
}
3844+
static function OutputFilterLinkAdExtension($dataObject)
3845+
{
3846+
if (!empty($dataObject))
3847+
{
3848+
self::OutputStatusMessage("* * * Begin OutputFilterLinkAdExtension * * *");
3849+
self::OutputStatusMessage(sprintf("AdExtensionHeaderType: %s", $dataObject->AdExtensionHeaderType));
3850+
self::OutputStatusMessage("FinalMobileUrls:");
3851+
self::OutputArrayOfString($dataObject->FinalMobileUrls);
3852+
self::OutputStatusMessage("FinalUrls:");
3853+
self::OutputArrayOfString($dataObject->FinalUrls);
3854+
self::OutputStatusMessage(sprintf("Language: %s", $dataObject->Language));
3855+
self::OutputStatusMessage("Texts:");
3856+
self::OutputArrayOfString($dataObject->Texts);
3857+
self::OutputStatusMessage(sprintf("TrackingUrlTemplate: %s", $dataObject->TrackingUrlTemplate));
3858+
self::OutputStatusMessage("UrlCustomParameters:");
3859+
self::OutputCustomParameters($dataObject->UrlCustomParameters);
3860+
self::OutputStatusMessage("* * * End OutputFilterLinkAdExtension * * *");
3861+
}
3862+
}
3863+
static function OutputArrayOfFilterLinkAdExtension($dataObjects)
3864+
{
3865+
if(count((array)$dataObjects) == 0 || !isset($dataObjects->FilterLinkAdExtension))
3866+
{
3867+
return;
3868+
}
3869+
foreach ($dataObjects->FilterLinkAdExtension as $dataObject)
3870+
{
3871+
self::OutputFilterLinkAdExtension($dataObject);
3872+
}
3873+
}
38363874
static function OutputFixedBid($dataObject)
38373875
{
38383876
if (!empty($dataObject))
@@ -5840,6 +5878,29 @@ static function OutputArrayOfTargetCpaBiddingScheme($dataObjects)
58405878
self::OutputTargetCpaBiddingScheme($dataObject);
58415879
}
58425880
}
5881+
static function OutputTargetImpressionShareBiddingScheme($dataObject)
5882+
{
5883+
if (!empty($dataObject))
5884+
{
5885+
self::OutputStatusMessage("* * * Begin OutputTargetImpressionShareBiddingScheme * * *");
5886+
self::OutputStatusMessage("MaxCpc:");
5887+
self::OutputBid($dataObject->MaxCpc);
5888+
self::OutputStatusMessage(sprintf("TargetAdPosition: %s", $dataObject->TargetAdPosition));
5889+
self::OutputStatusMessage(sprintf("TargetImpressionShare: %s", $dataObject->TargetImpressionShare));
5890+
self::OutputStatusMessage("* * * End OutputTargetImpressionShareBiddingScheme * * *");
5891+
}
5892+
}
5893+
static function OutputArrayOfTargetImpressionShareBiddingScheme($dataObjects)
5894+
{
5895+
if(count((array)$dataObjects) == 0 || !isset($dataObjects->TargetImpressionShareBiddingScheme))
5896+
{
5897+
return;
5898+
}
5899+
foreach ($dataObjects->TargetImpressionShareBiddingScheme as $dataObject)
5900+
{
5901+
self::OutputTargetImpressionShareBiddingScheme($dataObject);
5902+
}
5903+
}
58435904
static function OutputTargetRoasBiddingScheme($dataObject)
58445905
{
58455906
if (!empty($dataObject))
@@ -6841,6 +6902,29 @@ static function OutputArrayOfPromotionOccasion($valueSets)
68416902
}
68426903
self::OutputStatusMessage("* * * End OutputArrayOfPromotionOccasion * * *");
68436904
}
6905+
static function OutputAdExtensionHeaderType($valueSet)
6906+
{
6907+
self::OutputStatusMessage("* * * Begin OutputAdExtensionHeaderType * * *");
6908+
self::OutputStatusMessage(sprintf("Values in %s", $valueSet->type));
6909+
foreach ($valueSet->string as $value)
6910+
{
6911+
self::OutputStatusMessage($value);
6912+
}
6913+
self::OutputStatusMessage("* * * End OutputAdExtensionHeaderType * * *");
6914+
}
6915+
static function OutputArrayOfAdExtensionHeaderType($valueSets)
6916+
{
6917+
if(count((array)$valueSets) == 0)
6918+
{
6919+
return;
6920+
}
6921+
self::OutputStatusMessage("* * * Begin OutputArrayOfAdExtensionHeaderType * * *");
6922+
foreach ($valueSets->AdExtensionHeaderType as $valueSet)
6923+
{
6924+
self::OutputAdExtensionHeaderType($valueSet);
6925+
}
6926+
self::OutputStatusMessage("* * * End OutputArrayOfAdExtensionHeaderType * * *");
6927+
}
68446928
static function OutputAdExtensionsTypeFilter($valueSet)
68456929
{
68466930
self::OutputStatusMessage("* * * Begin OutputAdExtensionsTypeFilter * * *");

src/Auth/IOAuthService.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ abstract class IOAuthService
1414
* @param OAuthRequestParameters $oauthRequestParameters
1515
* @param ApiEnvironment $environment
1616
* @param bool $requireLiveConnect
17+
* @param string $tenant
18+
* @param array $additionalParams
1719
*/
18-
abstract function GetAccessTokens(OAuthRequestParameters $oauthRequestParameters, $environment, $requireLiveConnect);
20+
abstract function GetAccessTokens(OAuthRequestParameters $oauthRequestParameters, $environment, $requireLiveConnect, $tenant, $additionalParams);
1921
}

src/Auth/OAuthAuthorization.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@ abstract class OAuthAuthorization extends Authentication
3737
*/
3838
public $RequireLiveConnect = false;
3939

40+
/**
41+
* Optional custom AAD tenant for MS Identity in production.
42+
* @var bool
43+
*/
44+
public $Tenant = "common";
45+
4046
public function __construct() {}
4147

4248
/**
@@ -106,6 +112,17 @@ public function withRequireLiveConnect($requireLiveConnect) {
106112
$this->RedirectUri=UriOAuthService::GetRedirectUrl($this->Environment, $requireLiveConnect);
107113
return $this;
108114
}
115+
116+
/**
117+
* Includes the Tenant flag.
118+
*
119+
* @param string $tenant
120+
* @return OAuthAuthorization this builder
121+
*/
122+
public function withTenant($tenant) {
123+
$this->Tenant = $tenant;
124+
return $this;
125+
}
109126

110127
/**
111128
* Implementations of this abstract method will get the Microsoft Account authorization endpoint

src/Auth/OAuthDesktopMobileImplicitGrant.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,11 @@ public function GetAuthorizationEndpoint(){
4343
->withRedirectUri($this->RedirectUri)
4444
->withState($this->State);
4545

46-
return UriOAuthService::GetAuthorizationEndpoint($oauthUrlParameters, $this->Environment, $this->RequireLiveConnect);
46+
return UriOAuthService::GetAuthorizationEndpoint(
47+
$oauthUrlParameters,
48+
$this->Environment,
49+
$this->RequireLiveConnect,
50+
$this->Tenant);
4751
}
4852

4953
/**

src/Auth/OAuthWithAuthorizationCode.php

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,20 +59,25 @@ public function GetAuthorizationEndpoint(){
5959
$oauthUrlParameters->RedirectUri = $this->RedirectUri;
6060
$oauthUrlParameters->State = $this->State;
6161

62-
return UriOAuthService::GetAuthorizationEndpoint($oauthUrlParameters, $this->Environment, $this->RequireLiveConnect);
62+
return UriOAuthService::GetAuthorizationEndpoint(
63+
$oauthUrlParameters,
64+
$this->Environment,
65+
$this->RequireLiveConnect,
66+
$this->Tenant);
6367
}
6468

6569
/**
6670
* Retrieves OAuth access and refresh tokens from the Microsoft Account authorization service
6771
* using the specified authorization response redirect Uri.
6872
*
6973
* @param string $responseUri
74+
* @param array $additionalParams
7075
*
7176
* @return OAuthTokens
7277
* @throws Exception
7378
* @throws OAuthTokenRequestException
7479
*/
75-
public function RequestOAuthTokensByResponseUri($responseUri)
80+
public function RequestOAuthTokensByResponseUri($responseUri, $additionalParams=null)
7681
{
7782
if ($responseUri == null)
7883
{
@@ -107,7 +112,13 @@ public function RequestOAuthTokensByResponseUri($responseUri)
107112
->withGrantParamName("code")
108113
->withGrantValue($code);
109114

110-
$this->OAuthTokens = $this->oauthService->GetAccessTokens($oauthRequestParameters, $this->Environment, $this->RequireLiveConnect);
115+
$this->OAuthTokens = $this->oauthService->GetAccessTokens(
116+
$oauthRequestParameters,
117+
$this->Environment,
118+
$this->RequireLiveConnect,
119+
$this->Tenant,
120+
$additionalParams
121+
);
111122

112123
return $this->OAuthTokens;
113124
}
@@ -117,11 +128,12 @@ public function RequestOAuthTokensByResponseUri($responseUri)
117128
* using the specified refresh token.
118129
*
119130
* @param string $refreshToken
131+
* @param array $additionalParams
120132
*
121133
* @return OAuthTokens
122134
* @throws Exception
123135
*/
124-
public function RequestOAuthTokensByRefreshToken($refreshToken)
136+
public function RequestOAuthTokensByRefreshToken($refreshToken, $additionalParams=null)
125137
{
126138
if ($refreshToken == null)
127139
{
@@ -135,7 +147,13 @@ public function RequestOAuthTokensByRefreshToken($refreshToken)
135147
->withGrantParamName("refresh_token")
136148
->withGrantValue($refreshToken);
137149

138-
$this->OAuthTokens = $this->oauthService->GetAccessTokens($oauthRequestParameters, $this->Environment, $this->RequireLiveConnect);
150+
$this->OAuthTokens = $this->oauthService->GetAccessTokens(
151+
$oauthRequestParameters,
152+
$this->Environment,
153+
$this->RequireLiveConnect,
154+
$this->Tenant,
155+
$additionalParams
156+
);
139157

140158
return $this->OAuthTokens;
141159
}

0 commit comments

Comments
 (0)