Golang gads Аутентификация пакетов без файла
Я пытаюсь использовать пакет 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 ответ
Предполагая, что у вас есть учетные данные в строке как 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
}