Bing Ads sdk V12:错误代码 105,无效凭据(客户管理)
Bing Ads sdk V12: Error code 105, Invalid Credential (Customer Management)
我在执行“GetUser”请求时遇到错误代码 105(消息:“身份验证失败。提供的凭据无效或帐户处于非活动状态”)的问题。我已经明白这是因为目标环境的访问令牌(AuthenticationToken header 元素)或开发人员令牌不正确。所以这一定是关于我设置凭据(或我的凭据)的方式。这是我的代码:
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();
}
这是调用 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函数与documentation中PHP“代码语法”部分的函数相同。
我正在使用我自己的凭据使用生产环境。我已经检查了我的开发人员令牌和所有相应的权利(这似乎是正确的)。每次尝试执行该请求时,我都会更新我的令牌。
我设置请求的方式有什么问题吗?
如果问题是关于令牌的,有没有办法检查它是否正确?
我准确地说,我也尝试过使用 getAccount function 得到相同的结果。
有什么想法吗?谢谢你的时间。
这里有一些想法可供探索:
- 您可以使用这些凭据登录 Bing Ads web application 即,该用户是否有权访问 Bing Ads 帐户?
- OAuthTokens->AccessToken 是否已设置或为空,例如,尝试 var_dump($authentication).
- 尝试直接在 auth 对象中刷新令牌,例如,请参阅 this sample。
记录 SOAP 请求和响应以查看是否在 GetUser 调用中设置了 AuthenticationToken 例如,在 GetUser 调用之后立即打印最后一个 request/response:
print $GLOBALS['Proxy']->GetService()->__getLastRequest()."\n";
print $GLOBALS['Proxy']->GetService()->__getLastResponse()."\n";
否则,要确认凭据,您可能需要直接联系 Bing Ads support。
希望对您有所帮助!
我在执行“GetUser”请求时遇到错误代码 105(消息:“身份验证失败。提供的凭据无效或帐户处于非活动状态”)的问题。我已经明白这是因为目标环境的访问令牌(AuthenticationToken header 元素)或开发人员令牌不正确。所以这一定是关于我设置凭据(或我的凭据)的方式。这是我的代码:
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();
}
这是调用 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函数与documentation中PHP“代码语法”部分的函数相同。 我正在使用我自己的凭据使用生产环境。我已经检查了我的开发人员令牌和所有相应的权利(这似乎是正确的)。每次尝试执行该请求时,我都会更新我的令牌。 我设置请求的方式有什么问题吗? 如果问题是关于令牌的,有没有办法检查它是否正确? 我准确地说,我也尝试过使用 getAccount function 得到相同的结果。
有什么想法吗?谢谢你的时间。
这里有一些想法可供探索:
- 您可以使用这些凭据登录 Bing Ads web application 即,该用户是否有权访问 Bing Ads 帐户?
- OAuthTokens->AccessToken 是否已设置或为空,例如,尝试 var_dump($authentication).
- 尝试直接在 auth 对象中刷新令牌,例如,请参阅 this sample。
记录 SOAP 请求和响应以查看是否在 GetUser 调用中设置了 AuthenticationToken 例如,在 GetUser 调用之后立即打印最后一个 request/response:
print $GLOBALS['Proxy']->GetService()->__getLastRequest()."\n"; print $GLOBALS['Proxy']->GetService()->__getLastResponse()."\n";
否则,要确认凭据,您可能需要直接联系 Bing Ads support。
希望对您有所帮助!