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 步中创建的 Credential
的 oAuth2Credential
实例创建一个 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