没有文件的Golang gads包认证

时间:2017-03-01 18:12:01

标签: json go struct google-adwords

我试图使用我发现的google adwords api golang软件包。但是,此程序包仅具有用于对包含所有凭据的文件进行身份验证的方法/功能。 我对Golang很新,所以我不确定如何创建一个新函数来使用包含必要信息的字符串变量进行身份验证。

该套餐可在以下网址找到: https://github.com/emiddleton/gads

我做了一些挖掘,看看能不能搞清楚。我找到了包含信息的文件结构的示例。这是一个例子:

 {
     "oauth2.Config": {
         "ClientID": "4585432543254323-f4qfewtg2qtg5esy24t45h.apps.googleusercontent.com",
         "ClientSecret": "fa74ehgyjhtrrjtbrsu56hHjhhrtger",
         "Endpoint": {
             "AuthURL": "https://accounts.google.com/o/oauth2/auth",
             "TokenURL": "https://accounts.google.com/o/oauth2/token"
         },
         "RedirectURL": "oob",
         "Scopes": [
             "https://adwords.google.com/api/adwords"
         ]
     },
     "oauth2.Token": {
         "access_token": "jfdsalkfjdskalfjdaksfdasfdsahrtsrgf",
         "token_type": "Bearer",
         "refresh_token": "g65wurefej87ruy4fcyfdsafdsafdsafsdaf4fu",
         "expiry": "2015-03-05T00:13:23.382907238+09:00"
     },
     "gads.Auth": {
         "CustomerId": "INSERT_YOUR_CLIENT_CUSTOMER_ID_HERE",
         "DeveloperToken": "INSERT_YOUR_DEVELOPER_TOKEN_HERE",
         "UserAgent": "tests (Golang 1.4 github.com/emiddleton/gads)"
     }
 }

它是一个JSON对象。我看到包正在使用以下函数来引入信息:

func NewCredentialsFromFile(pathToFile string, ctx context.Context) (ac AuthConfig, err error) {
    data, err := ioutil.ReadFile(pathToFile)
    if err != nil {
        return ac, err
    }
    if err := json.Unmarshal(data, &ac); err != nil {
        return ac, err
    }
    ac.file = pathToFile
    ac.tokenSource = ac.OAuth2Config.TokenSource(ctx, ac.OAuth2Token)
    ac.Auth.Client = ac.OAuth2Config.Client(ctx, ac.OAuth2Token)
    return ac, err

已定义pathToFile的位置。路径将是放在用户主目录中的json文件。

添加另一个不依赖于使用文件作为凭据的函数的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

假设您将字符串中的凭据作为json,请在代码中使用AuthConfig,如:

func NewCredentialsFromStr(config string, ctx context.Context) (ac gads.AuthConfig, err error) {
    if err := json.Unmarshal(config, &ac); err != nil {
        return ac, err
    }
    ac.file = pathToFile
    ac.tokenSource = ac.OAuth2Config.TokenSource(ctx, ac.OAuth2Token)
    ac.Auth.Client = ac.OAuth2Config.Client(ctx, ac.OAuth2Token)
    return ac, err
}