У меня проблема с кодом ошибки 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 с тем же результатом.
Есть идеи? Спасибо за ваше время.
Вот несколько идей для изучения:
Зарегистрируйте запрос и ответ SOAP, чтобы увидеть, был ли установлен AuthenticationToken в вызове GetUser, например, сразу после вызова GetUser вывести последний запрос / ответ:
print $GLOBALS['Proxy']->GetService()->__getLastRequest()."\n";
print $GLOBALS['Proxy']->GetService()->__getLastResponse()."\n";
В противном случае для подтверждения учетных данных вы можете связаться Поддержка Bing Ads непосредственно.
Надеюсь, это поможет!
Других решений пока нет …