最新的 Google Adwords oAuth API 实施
Posted
技术标签:
【中文标题】最新的 Google Adwords oAuth API 实施【英文标题】:Latest Google Adwords oAuth API implementation 【发布时间】:2017-08-21 02:24:48 【问题描述】:美好的一天,
我在尝试将我的 adwords API oAuth 迁移到更新的 API 版本(即 v201705)时遇到问题。
我使用 v201609 的旧实现正在运行,现在因为这个版本已经处于日落状态。我一直在将我的应用迁移到更新的 API 版本。
基本上,我很难从 Google 或任何地方找到任何说明如何使用与最新 Adwords API 版本相关的 Adwords API 实施 Google oAuth 的文档。
以下是我当前的代码:
$redirectUri = 'http://xxxxxxx/dashboard/accounts/oauth2callback';
$code = $_GET['code'];
//$code = Request::query('code');
$user = new AdWordsUser(
base_path('auth.ini'),
null,
null,
null,
base_path('settings.ini'),
null
);
$OAuth2Handler = $user->GetOAuth2Handler();
// Get the access token using the authorization code. Ensure you use the same
// redirect URL used when requesting authorization.
$user->SetOAuth2Info(
$OAuth2Handler->GetAccessToken(
$user->GetOAuth2Info(), $code, $redirectUri));
// The access token expires but the refresh token obtained for offline use
// doesn't, and should be stored for later use.
//return $user->GetOAuth2Info();
//$result = json_decode($user->GetOAuth2Info());
$refreshToken = $user->GetOAuth2Info()['refresh_token'];
谁能指出我最新的 Google Adwords API 版本的正确实现?
以下是我目前一直在努力实现的目标,但显然这不起作用和/或完全遗漏了一些东西:
$redirectUri = 'http://xxxxxxx/dashboard/accounts/oauth2callback';
$code = $_GET['code'];
//$code = Request::query('code');
/* $user = new AdWordsUser(
base_path('auth.ini'),
null,
null,
null,
base_path('settings.ini'),
null
); */
// Generate a refreshable OAuth2 credential for authentication.
$oAuth2Credential = (new OAuth2TokenBuilder())
->fromFile()
->build();
// Construct an API session configured from a properties file and the OAuth2
// credentials above.
$user = (new AdWordsSessionBuilder())
->fromFile()
->withOAuth2Credential($oAuth2Credential)
->build();
$OAuth2Handler = $user->GetOAuth2Handler();
// Get the access token using the authorization code. Ensure you use the same
// redirect URL used when requesting authorization.
$user->SetOAuth2Info(
$OAuth2Handler->GetAccessToken(
$user->GetOAuth2Info(), $code, $redirectUri));
// The access token expires but the refresh token obtained for offline use
// doesn't, and should be stored for later use.
//return $user->GetOAuth2Info();
//$result = json_decode($user->GetOAuth2Info());
$refreshToken = $user->GetOAuth2Info()['refresh_token'];
$customer_id = $this->GetClientCustomerName($refreshToken)['customer_id'];
//$customer_name = $this->GetClientCustomerName($refreshToken)['customer_name'];
谢谢。
【问题讨论】:
我已经设法弄清楚了这一点。 【参考方案1】:好吧,我终于发现我需要遵循 Google OAuth2 实施,因为我之前使用的是 Google Adwords 实施。不知道两者的工作方式相同。
以下是我提出并正在工作的内容:
$redirectUri = 'http://xxxxxxx/dashboard/accounts/oauth2callback';
$code = $_GET['code'];
$oauth2 = new OAuth2([
'authorizationUri' => 'https://accounts.google.com/o/oauth2/v2/auth',
'tokenCredentialUri' => 'https://www.googleapis.com/oauth2/v4/token',
'redirectUri' => $redirectUri,
'clientId' => $this->client_id,
'clientSecret' => $this->client_secret,
'scope' => '****'
]);
$oauth2->setCode($code);
$authToken = $oauth2->fetchAuthToken();
// Store the refresh token for your user in your local storage if you
// requested offline access.
$refreshToken = $authToken['refresh_token'];
【讨论】:
以上是关于最新的 Google Adwords oAuth API 实施的主要内容,如果未能解决你的问题,请参考以下文章
Google Adwords API 错误 - OAuth 客户端已删除
如何将 OAuth 与 Google AdWords / AdSense API 一起使用?
Google Adwords OAuth“错误”:“invalid_client”异常
将授权机制 ClientLogin 迁移到 OAuth2 Google AdWords v201206 Perl