API Bing Ads — ошибка неверных учетных данных

Итак, наша программа отчетов BingAds, которая работает в течение многих месяцев, внезапно страдает от 105 (InvalidCredentials) ошибок. Срок действия маркера доступа истек, поэтому я запросил новый, который успешно выполняется, и дал мне новый токен доступа, срок действия которого истекает в будущем.

    $accessTokenExchangeUrl = "https://login.live.com/oauth20_token.srf";

$accessTokenExchangeParams = array();
$accessTokenExchangeParams['client_id']     = $this->client_id();
$accessTokenExchangeParams['client_secret'] = $this->client_secret();
$accessTokenExchangeParams['grant_type']    = 'refresh_token';
$accessTokenExchangeParams['refresh_token'] = $code;

// Create an HTTP client and execute an HTTP POST request to
// exchange the authorization token for an access token and
// refresh token.
$httpClient = new HttpClient();
$responseJson = $httpClient->postData( $accessTokenExchangeUrl, $accessTokenExchangeParams);

// The response formatted in json
$responseArray = json_decode($responseJson, TRUE);

// If the response contains an access_token element, it was successful.
// If not, an error occurred - throw an exception
if (isset($responseArray['access_token']))
{
return $responseArray;

}

Но затем использование этого нового токена приводит к ошибке 105:

$proxy = \BingAds\Proxy\ClientProxy::ConstructWithCredentials($wsdl, $bingUserName,
$bingPasswd,
$developer_token,
$access_token);

$report = new KeywordPerformanceReportRequest();
$report->Format = ReportFormat::Tsv;
$report->ReportName = 'Keyword Performance Report';
$report->ReturnOnlyCompleteData = false;

<report definition>

$encodedReport = new SoapVar($report, SOAP_ENC_OBJECT, 'KeywordPerformanceReportRequest', $proxy->GetNamespace());

$this->bingReportRequestID = $this->_BingSubmitGenerateReport( $proxy, $encodedReport );
$request = new SubmitGenerateReportRequest();
$request->ReportRequest = $report;

$retval = $proxy->GetService()->SubmitGenerateReport($request)->ReportRequestId;
::> throws a SoapFault

Есть идеи? Как я уже говорил, месяцами все работало нормально, а теперь вдруг ничего.

1

Решение

Видимо, вы используете refresh_token для аутентификации. С новым полученным токеном вам нужно сгенерировать новый refresh_token и использовать его вместо этого.

0

Другие решения

Других решений пока нет …