2016-01-02 2 views
0

Я пытаюсь выполнить аутентификацию в Bing Ads Api, но я получаю это сообщение:Ошибка аутентификации. Либо предоставленные учетные данные недействительны, либо учетная запись неактивна.

Ошибка аутентификации. Либо Прилагаемые учетные данные недействительны или учетная запись неактивна

Это мой код:

$UserName = "[email protected]"; 
$Password = "xxx"; 
$DeveloperToken = "xxx"; 
$CustomerId = xxx; 
$AccountId = xxx; 

$wsdl = "https://campaign.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V10/CampaignManagementService.svc?singleWsdl"; 
try 
{ 
    $proxy = ClientProxy::ConstructWithAccountAndCustomerId($wsdl, $UserName, $Password, $DeveloperToken, $AccountId, $CustomerId, null); 

    // Specify one or more campaigns. 

    $campaigns = array(); 

    $campaign = new Campaign(); 
    $campaign->Name = "Winter Clothing " . $_SERVER['REQUEST_TIME']; 
    $campaign->Description = "Winter clothing line."; 
    $campaign->BudgetType = BudgetLimitType::MonthlyBudgetSpendUntilDepleted; 
    $campaign->MonthlyBudget = 1000.00; 
    $campaign->TimeZone = "PacificTimeUSCanadaTijuana"; 
    $campaign->DaylightSaving = true; 
    // Used with FinalUrls shown in the ads that we will add below. 
    $campaign->TrackingUrlTemplate = 
     "http://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl}"; 
    $campaigns[] = $campaign; 
    // Add the campaign, ad group, keywords, and ads 

    $campaignIds = AddCampaigns($proxy, $AccountId, $campaigns); 
    PrintCampaignIdentifiers($campaignIds); 

} 
catch (SoapFault $e) 
{ 
    // Output the last request/response. 

    print "\nLast SOAP request/response:\n"; 
    print $proxy->GetWsdl() . "\n"; 
    print $proxy->GetService()->__getLastRequest()."\n"; 
    print $proxy->GetService()->__getLastResponse()."\n"; 

    // Campaign Management service operations can throw AdApiFaultDetail. 
    if (isset($e->detail->AdApiFaultDetail)) 
    { 
     // Log this fault. 

     print "The operation failed with the following faults:\n"; 

     $errors = is_array($e->detail->AdApiFaultDetail->Errors->AdApiError) 
     ? $e->detail->AdApiFaultDetail->Errors->AdApiError 
     : array('AdApiError' => $e->detail->AdApiFaultDetail->Errors->AdApiError); 

     // If the AdApiError array is not null, the following are examples of error codes that may be found. 
     foreach ($errors as $error) 
     { 
      print "AdApiError\n"; 
      printf("Code: %d\nError Code: %s\nMessage: %s\n", $error->Code, $error->ErrorCode, $error->Message); 

      switch ($error->Code) 
      { 
       case 105: // InvalidCredentials 
        break; 
       case 117: // CallRateExceeded 
        break; 
       default: 
        print "Please see MSDN documentation for more details about the error code output above.\n"; 
        break; 
      } 
     } 

ответ

0

Извините за задержку ответа. Я заметил, что вы устанавливаете UserName на адрес ***@hotmail.com. Если вы используете учетную запись электронной почты, то есть учетную запись Microsoft, то вы должны использовать OAuth i.e установить элемент заголовка AuthenticationToken, а не устанавливать поля UserName/Password.