【问题标题】:ColdFusion -> Google Analytics API with oauth 2 and Service AccountColdFusion -> 带有 oauth 2 和服务帐户的 Google Analytics API
【发布时间】:2012-11-24 03:57:32
【问题描述】:

我正在编写一个 ColdFusion (CF) 应用,该应用需要访问自己的 Google Analytics (GA) 数据(而不是其他用户的)。一些研究表明我想使用简单 API 密钥,但后来我遇到警告说这已被弃用,我应该使用 Oauth 2 和服务帐户。

我找到了一个有效的 CF/Oauth2 演示 here,但它不是为使用服务帐户而设计的。然后我找到了一个post on StackOverflow,里面有Service Account认证的说明,但是代码是PHP的。

我已经在 GA 中创建了一个服务帐户,注册了应用程序,下载了私钥等。但我不知道如何使这一切都与 CF 一起工作。我可以在网上找到服务帐户身份验证或 CF Oauth 2 身份验证的示例,但不能同时找到两者。

谁能提供一个使用 Oauth 2 和服务帐户向 Google Analytics 进行 ColdFusion 身份验证的工作示例?

谢谢!

【问题讨论】:

标签: coldfusion oauth-2.0 google-analytics-api


【解决方案1】:

看看: https://web.archive.org/web/20160409194848/http://www.jensbits.com/2012/04/05/google-analytics-reporting-api-using-oauth-2-with-coldfusion/

创建登录 URL 并检索“代码” 登录 URL 参数

当应用在 Google API 控制台中注册 API 访问权限时,Google 会设置客户端 ID 和客户端密码。

重定向 uri 是用户在验证后被发送到的服务器上的一个位置。此 uri 在应用注册期间在 Google API 控制台中注册。

这些值可以包含在 application.cfc 中:

<cfset request.oauthSettings = {scope = "https://www.googleapis.com/auth/analytics.readonly",
      client_id = "YOUR-CLIENT-ID.apps.googleusercontent.com",
      client_secret = "YOUR-CLIENT-SECRET",
      redirect_uri = "YOUR-REDIRECT-URI",
      state = "optional"} />

用户登录网址

登录 URL 将提示用户允许通过应用访问他们的 Google 内容,并且 URL 中将返回一个“代码”请求变量。有关详细信息,请参阅形成 URL。

<!--- create login url --->
<cfset loginURL = "https://accounts.google.com/o/oauth2/auth?scope=" & request.oauthSettings["scope"]
                   & "&redirect_uri=" & request.oauthSettings["redirect_uri"]
                   & "&response_type=code&client_id=" & request.oauthSettings["client_id"]
                   & "&access_type=online" />

使用有权访问分析的 Google 帐户登录

【讨论】:

  • 是的,我已经下载了该演示的代码,并且现在正在走这条路,但它没有使用 Google API 服务帐户。我想使用服务帐户来避免用户权限和重定向 uri 步骤,因为我只访问我自己的数据(而不是其他用户的数据)。 Jen 的网站对我有很大帮助 - 也许我会问她有关服务帐户的问题...
【解决方案2】:

将可以在Google Analytics API Client Library for Java下载的来自Google的.jar文件安装到CF服务器的WEB-INF/lib文件夹中。

在 ColdFusion 中创建对象。这是一个例子:

variables.HTTP_Transport = createObject("java", "com.google.api.client.http.javanet.NetHttpTransport").init();

然后,您将完全按照 Google 的说明使用 java 对象几乎

要列出的行太多(但也不算太疯狂),所以你可以关注这个帖子:Accessing Google Analytics API with Service Account and Coldfusion

【讨论】:

    猜你喜欢
    • 2012-09-30
    • 2012-03-11
    • 1970-01-01
    • 2014-04-20
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 2013-08-30
    相关资源
    最近更新 更多