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
}
Другие вопросы по тегам