无文件的 Golang gads 包身份验证
Golang gads Package Authentication without File
我正在尝试使用我找到的 google adwords api golang 包。但是,此包只有 methods/functions 用于针对包含所有凭据的文件进行身份验证。
我是 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 文件。
添加另一个不依赖于使用凭据文件的功能的最佳方法是什么?
假设您的凭据在字符串中为 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
}
我正在尝试使用我找到的 google adwords api golang 包。但是,此包只有 methods/functions 用于针对包含所有凭据的文件进行身份验证。 我是 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 文件。
添加另一个不依赖于使用凭据文件的功能的最佳方法是什么?
假设您的凭据在字符串中为 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
}