ClientLoginToken 的替代方案

Posted

技术标签:

【中文标题】ClientLoginToken 的替代方案【英文标题】:Alternative of ClientLoginTokens 【发布时间】:2013-11-01 10:15:22 【问题描述】:

我正在使用 google Adwords API 来升级我们的代码,以便从 v201302 迁移到 v201309。 任何人都可以建议我,我们应该使用什么代码代替以下代码(因为 ClientLoginTokens 现在已弃用)。

String clientLoginToken = new ClientLoginTokens.Builder()
                    .forApi(ClientLoginTokens.Api.ADWORDS)
                    .withEmailAndPassword(configurations.get("email"), configurations.get("password"))
                    .build()
                    .requestToken();

【问题讨论】:

【参考方案1】:

以下是我为使 OAuth2 正常工作所采取的步骤。当然是 YMMV...

第 1 步 - 使用 Google Console API 注册应用程序

    使用上面的电子邮件和密码登录 Google 前往Google API Console。您可能会被重定向到 Google Cloud Console 在“API 和身份验证”下单击“同意屏幕”。至少填写“产品名称”和“电子邮件”。 在“APIs & Auth”下点击“Registered apps”。 点击“注册应用”。填写详细信息,确保选择“Native”作为平台。 在“OAuth 2.0 客户端 ID”下记下 CLIENT ID 和 CLIENT SECRET 值。

第 2 步 - 生成刷新令牌

下一步是生成刷新令牌。这是一个生成一次使用多次的令牌,允许您的应用程序获取新的访问令牌:

    下载GetRefreshToken.java。

    创建一个aps.properties 文件以供GoogleClientSecretsBuilder() .forApi(Api.ADWORDS) 调用引用。这个ads.properties 文件应该包含两行:

    api.adwords.clientId=client-id-from-step1.6

    api.adwords.clientSecret=client-secret-from-step1.6

    使用网络浏览器登录 Google AdWords MCC。

    运行GetRefreshToken.java 并按照说明操作,即将浏览器 URL 复制到浏览器中,输入返回到控制台的代码等。 您现在应该有一个 refreshToken。将此刷新令牌复制到您的 ads.properties 文件中,如下所示:

api.adwords.refreshToken=your-refresh-token

PS GetRefreshToken.java 有几个依赖项。如果您使用的是 Maven,那么它们就在这里(相应地调整版本!):

    <dependency>
        <groupId>com.google.apis</groupId>
        <artifactId>google-api-services-oauth2</artifactId>
        <version>v2-rev50-1.17.0-rc</version>
    </dependency>

    <dependency>
        <groupId>com.google.api-ads</groupId>
        <artifactId>adwords-axis</artifactId>
        <version>1.20.0</version>
    </dependency>

第 3 步 - 生成凭据

使用 ads.properties 中的 refreshToken、clientId 和 clientSecret,您现在可以生成这样的凭据:

Credential oAuth2Credential = new OfflineCredentials.Builder()
    .forApi(Api.ADWORDS)
    .fromFile()
    .build()
    .generateCredential();

第 4 步 - 获取 AdWords 会话

最后一步(如果您已经走到这一步,请向您致敬!)是使用您在第 3 步中创建的 CredentialoAuth2Credential 实例创建一个 AdWords 会话。您可以通过再添加两个将内容添加到您的 ads.properties 文件中:

api.adwords.developerToken=developer-token-from-mcc

api.adwords.clientCustomerId=client-id-of-adwords-account-that-you-want-to-access

然后使用如下方式启动 AdWords 会话:

AdWordsSession awSession =
                new AdWordsSession.Builder()
                .fromFile()
                .withOAuth2Credential(oAuth2Credential)
                .build();

第 5 步 - 喝杯咖啡,想想使用 OAuth2 访问 Google AdWords API 是多么容易

这一步完全是可选的。

【讨论】:

【参考方案2】:

您不能像以前一样转换旧流程。 Google 的Migration Guide 中有一些示例。请参阅身份验证/OAuth 2.0 部分:

If you are coming from using ClientLogin, we've added a few features to make it extremely easy to switch over.

Once you've generated a refresh token using the GetRefreshToken.java example of your examples download, and you've copied it into your ads.properties file, you'll be able to create a refreshable token with the OfflineCredentials utility.

Credential oAuth2Credential = new OfflineCredentials.Builder()
.forApi(Api.DFP)
.fromFile()
.build()
.generateCredential();

Once authorized, you can set the Credential object into the builder or session:

DfpSession session = new DfpSession.Builder()
.fromFile()
.withOAuth2Credential(oAuth2Credential)
.build();

OAuth2 will now be used when making API calls. 

您可以将 Api.DFP 更改为 Api.ADWORDS。 Using OAuth 2.0 for Login 文章全面介绍了 Google 的 OAuth 2.0。

【讨论】:

谢谢 Dag ..我应该使用什么来代替客户 ID 和秘密。我们可以使用 adword 客户 ID 代替客户 ID。

以上是关于ClientLoginToken 的替代方案的主要内容,如果未能解决你的问题,请参考以下文章

NCS8823替代方案|NCS8823芯片替代方案|CS5260替代NCS8823方案电路

Logstash 五种替代方案(Filebeat、Fluentd、rsyslog、syslog-ng 以及 Logagent

ffserver 的替代方案是啥?

梯度下降的替代方案是啥?

OnMouseOver 触控的首选替代方案

GrantedAuthorityImpl() 类的替代方案