簡體   English   中英

谷歌 Adwords API 授權請求

[英]google adwords API authorize request

我正在開發現有 CPA 系統和 Google AdWords 之間的集成。 轉化存儲在系統中,目標是作為后台任務定期解析轉化並將其發送到用戶的 Google Ad 帳戶。

這是我到目前為止的想法:

  1. 我需要一個谷歌應用程序,用戶將授予其將數據推送到他們的廣告帳戶的權限。
  2. 我需要 Oauth2 憑據來授權我的應用程序和用戶憑據來授權 API 請求。

創建和存儲 gclid 的過程現在不值得關注。

我使用php 客戶端庫https://github.com/googleads/googleads-php-lib ,它有adsapi_php.ini配置文件。 在此文件中,有開發者令牌、經理的帳戶客戶端 ID 和 OAuth2 憑據(cliendId、clientSecret、refreshToken)。

但是,當用戶通過同意屏幕訪問我的應用程序時,我按如下方式創建 OAuth2 對象:

 $oAuth2Credential = new OAuth2([
        'authorizationUri'   => 'https://accounts.google.com/o/oauth2/v2/auth',
        'tokenCredentialUri' => 'https://www.googleapis.com/oauth2/v4/token',
        'redirectUri'        => '<myEndpoint>',
        'clientId'           => '<myClientId>',
        'clientSecret'       => '<myClientSecret>',
        'scope'              => 'https://www.googleapis.com/auth/adwords'
    ]);

如果我理解正確,我絕對需要擁有 Web 應用程序 OAuth 憑據,以便進行回調以保存用戶的訪問和刷新令牌,以便稍后在我的后台任務中使用它們。

1) 此憑據和 adsapi_ini.php 文件中的憑據是否必須相同?

我試圖為我的網絡類型憑據生成一個刷新令牌以在 conf 文件中使用,但它沒有用。 現在,當我在配置文件中擁有應用程序類型“other”的憑據以及用於獲取用戶憑據的 Oauth2 對象中的“web”應用程序憑據時,我能夠得到有效的響應,但我不確定這是正確的方法去做吧。

2)如何授權API請求將數據推送到某個用戶的賬戶?

這是示例代碼:

 $session = (new AdWordsSessionBuilder())
        ->fromFile()
        ->withOAuth2Credential($oAuth2Credential)
        ->withClientCustomerId('<client-customer-id>')
        ->build();

據我了解,會話對象對於構建任何進一步的查詢(包括上傳轉換)至關重要。

->fromFile()使用 mentined 配置文件來獲取我的令牌和身份驗證數據 - 基本上授權我的應用程序。

$oAuth2Credential是包含特定用戶授權數據的 OAuth2 對象。 問題是在文檔中,這個對象是由 builder 創建的,並使用相同的方法fromFile() ,我不明白它必須包含哪些數據。

我將access_tokenrefresh_token存儲在我的數據庫中,現在我正在構建 OAuth 對象,如下所示:

$oAuth2Credential = new OAuth2([
        'authorizationUri'   => 'https://accounts.google.com/o/oauth2/v2/auth',
        'tokenCredentialUri' => 'https://www.googleapis.com/oauth2/v4/token',
        'redirectUri'        => '<myEndpoint>',
        'clientId'           => '<myClientId>',
        'clientSecret'       => '<myClientSecret>',
        'scope'              => 'https://www.googleapis.com/auth/adwords',
        'access_token'       => '<user_access_token>'
    ]);

所以基本上只是將access_token添加到我用來從用戶獲取此令牌的參數中。 它有效,但看起來不是正確的方法。

3)如何管理用戶的token過期?

文檔說客戶端庫會自動處理刷新令牌,但我不明白它在我的情況下如何工作。 我是否需要在發出 API 請求時在 OAuth 對象中傳遞access_tokenrefresh_token然后它會自動刷新,或者我是否需要單獨的工作人員定期刷新用戶令牌以保持它們有效?

這是一個鏈接,描述了讓客戶端授權您的應用程序的流程。 https://pete-bowen.com/google-ads-api/adwords-api-authorize-multiple-users

一旦您存儲了客戶端 ID、秘密和刷新令牌(安全的地方),您就可以使用 OAuth2TokenBuilder 類,該類具有允許您提供 clientId、秘密和刷新令牌的方法,而不是從配置文件中讀取它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM