Bing Ads sdk V12: код ошибки 105, неверные учетные данные (управление клиентами) - PullRequest
0 голосов
/ 16 ноября 2018

У меня проблема с кодом ошибки 105 (сообщение: «Проверка подлинности не удалась. Либо предоставленные учетные данные недействительны, либо учетная запись неактивна») при выполнении запроса «GetUser». Я уже понимаю, что это из-за неправильного токена доступа (элемент заголовка AuthenticationToken) или токена разработчика для целевой среды. Так что это должно быть о том, как я устанавливаю свои учетные данные (или мои учетные данные). Вот мой код:

public function getAuthorization()
{
    $result = AuthController::getRefreshToken(); //get The refresh token, update it if necessary
    AuthController::WriteOAuthRefreshToken($result); //stock the refresh token

    $authentication = (new OAuthWebAuthCodeGrant())
            ->withEnvironment(AuthController::ApiEnvironment) //production
            ->withClientSecret(AuthController::ClientSecret)
            ->withClientId(AuthController::ClientId)
            ->withOAuthTokens(
    (new OAuthTokens())
            ->withAccessToken(json_decode($result, true)["access_token"])
            ->withRefreshToken(json_decode($result, true)["refresh_token"])
            ->withAccessTokenExpiresInSeconds(3600))
        ->withRedirectUri(AuthController::RedirectUri)
        ->withState(rand(0,999999999));

    $GLOBALS['AuthorizationData'] = (new AuthorizationData())
        ->withAuthentication($authentication)
        ->withDeveloperToken(AuthController::DeveloperToken);

    AuthController::Authenticate();
}

А вот функция Authenticate, которая вызывает функцию getUser ()

static function Authenticate()
{
    // Authenticate for Bing Ads services with a Microsoft Account. Perform a $GLOBALS['AuthorizationData']->Authentication->RequestOAuthTokensByRefreshToken($refreshToken);
    AuthController::AuthenticateWithOAuth();

    $GLOBALS['CustomerManagementProxy'] = new ServiceClient(
        ServiceClientType::CustomerManagementVersion12,
        $GLOBALS['AuthorizationData'],
        AuthController::ApiEnvironment);
    $GLOBALS['CustomerManagementProxy']->SetAuthorizationData($GLOBALS['AuthorizationData']);

    // Here is the problem
    $user = AuthController::GetUser(null, true)->User;
}

Используемая в настоящее время функция getUser такая же, как в php-разделе «Синтаксис кода» в документации . Я использую производственную среду со своими учетными данными. Я уже проверил свой токен разработчика и все соответствующие права (что кажется правильным). Я обновляю свои токены каждый раз, когда пытаюсь выполнить этот запрос. Есть ли проблемы с тем, как я установил запрос? Если проблема связана с токенами, есть ли способ проверить, правильно ли это? Я уточнил, что пробовал также с помощью функции getAccount с тем же результатом.

Есть идеи? Спасибо за ваше время.

1 Ответ

0 голосов
/ 16 ноября 2018

Вот несколько идей для изучения:

  1. Можете ли вы войти в веб-приложение Bing Ads с этими учетными данными, т.е. имеет ли этот пользователь доступ к учетной записи Bing Ads?
  2. Является ли OAuthTokens-> AccessToken установленным или пустым, например, попробуйте var_dump ($ authentication).
  3. Попробуйте обновить токен непосредственно в объекте аутентификации, например, см. этот пример .
  4. Записать SOAP-запрос и ответ, чтобы увидеть, был ли установлен AuthenticationToken в вызове GetUser, например, сразу после вызова GetUser вывести последний запрос / ответ:

    print $GLOBALS['Proxy']->GetService()->__getLastRequest()."\n";
    print $GLOBALS['Proxy']->GetService()->__getLastResponse()."\n";
    

В противном случае для подтверждения учетных данных вы можете напрямую связаться с Служба поддержки Bing Ads .

Надеюсь, это поможет!

...