服务器到服务器oauth2

时间:2013-10-14 21:04:17

标签: google-analytics go google-analytics-api

我正在尝试实施Golang应用程序来访问Google Analytics数据。但是所有的例子都使用了在一小时内死亡的令牌。 在api访问中,我发现了一个"证书访问"设计用于从服务器访问,但我没有在Golang中找到其实现的示例。有一些阅读或者你可以启发我的道路吗?

我正在使用这个库。     code.google.com/p/google-api-go-client /

在这里阅读一些帖子我发现了Service Applications and Google Analytics API V3: Server-to-server OAuth2 authentication?

但它似乎不会直接起作用。真是没办法做到这一点而不是乱砍它?

2 个答案:

答案 0 :(得分:1)

您检查了OAuth2包吗?我已经将它用于用户授权的调用,并且稍微破解它以允许它处理多个授权源。

我没有使用纯服务器到服务器的通信进行测试,但是你应该能够破解传输代码,使其能够满足需要......

答案 1 :(得分:0)

这可能有点晚了,但我没有找到一个很好的例子让人们开始。

开始之前请确保

  

安装golang 1.5

     

安装google cloud SDK(cloud.google.com/sdk - 这将允许本地开发)

     

在google appengine / cloud控制台中创建服务帐户并下载json(API' s和auth> Credentials)

设置完毕后:

  

为您之前下载的安全凭据设置路径

     

导出GOOGLE_APPLICATION_CREDENTIALS =〜/ DIRECTORY / CREDENTIALS.json

现在您可以使用go进行身份验证。

package main

import (
  "fmt"
  "golang.org/x/net/context"
  "golang.org/x/oauth2/google"
   analytics "google.golang.org/api/analytics/v3"
)

var (
  scope = analytics.AnalyticsReadonlyScope 
)

func main() {
  // Authentication is provided by the gcloud tool when running locally, and
  // by the associated service account when running on Compute Engine.
  client, err := google.DefaultClient(context.Background(), scope)
  if err != nil {
        fmt.Printf("Unable to get default client: %v", err)
  }

  service, err := analytics.New(client)
  if err != nil {
        fmt.Printf("Unable to create storage service: %v", err)
  }

  fmt.Println(service)
}