google adwords API授权请求

问题描述 投票:0回答:1

我正在开发现有的CPA系统和Google AdWords之间的集成。转化存储在系统中,目标是作为后台任务定期分析转化并将其发送到用户的Google广告帐户。

这是我到目前为止所想的:

  1. 我需要一个Google应用程序,用户将向该应用程序授予将数据推送到其广告帐户的权限。
  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文件中的凭据是否必须相同?

我已经尝试为我的Web类型凭据生成一个刷新令牌,以便在conf文件中使用,但是它不起作用。现在,当我在配置文件中具有应用程序类型“其他”的凭据,并且在Oauth2对象中具有“ Web”应用程序凭据以获取用户凭据时,我能够获得有效的响应,但是我不确定这是正确的方法去做。

2)如何授权API请求将数据推送到某些用户的帐户?

这里是示例代码:

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

据我所知,会话对象对于构建任何进一步的查询(包括向上转换)都是必不可少的。

[->fromFile()使用指导的配置文件来获取我的令牌和Auth数据-基本上授权了我的应用程序。

$oAuth2Credential是包含特定用户的授权数据的OAuth2对象。问题在于,在文档中,此对象是由构建器创建的,并使用相同的方法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)如何管理用户的令牌到期?

[文档说,客户端库会自动处理刷新令牌,但是我不知道在我的情况下它将如何工作。发出API请求时,是否需要在OAuth对象中传递access_tokenrefresh_token,然后它会自动刷新,还是我需要单独的工作程序定期刷新用户令牌以使其保持有效?

php oauth-2.0 google-adwords google-api-php-client
1个回答
0
投票

这里是一个链接,描述了让客户端授权您的应用的流程。https://pete-bowen.com/google-ads-api/adwords-api-authorize-multiple-users

一旦存储了客户端ID,秘密和刷新令牌(在安全的地方),您就可以使用OAuth2TokenBuilder类,该类具有允许您提供clientId,秘密和刷新令牌的方法,而不是从配置文件中读取它们。] >

© www.soinside.com 2019 - 2024. All rights reserved.