Go OAuth1 с разными ключами - PullRequest
       4

Go OAuth1 с разными ключами

0 голосов
/ 04 февраля 2020

Я разрабатываю приложение, которое использует API, который требует OAuth1.0. У меня есть список ключей API (токен доступа, секретный токен доступа, потребительский ключ и потребительский секрет). Я хотел бы обновить OAuth, используемый http-клиентом, когда захочу.

Вот как я добился этого в Python

from requests_oauthlib import OAuth1


oauth_credentials = [
    {
        "access_token": "a",
        "access_token_secret": "b",
        "consumer_key": "c",
        "consumer_secret": "d"
    },
    {
        "access_token": "a",
        "access_token_secret": "b",
        "consumer_key": "c",
        "consumer_secret": "d"
    },
    ...
]

oauths = [OAuth1(client_key=oauth_cred["consumer_key"], client_secret=oauth_cred["consumer_secret"], resource_owner_key=oauth_cred["access_token"], resource_owner_secret=oauth_cred["access_token_secret"]) for oauth_cred in oauth_credentials]

session = requests.Session()

i = 0
session.auth = oauths[i]

Я не могу понять, как этого добиться это эффективно в Go. Самый близкий, который я пришел, использует https://github.com/dghubble/oauth1. Однако в своем примере они создают новый httpClient для каждого набора учетных данных, например

config := oauth1.NewConfig("consumerKey", "consumerSecret")
token := oauth1.NewToken("token", "tokenSecret")

// httpClient will automatically authorize http.Request's
httpClient := config.Client(oauth1.NoContext, token)

Было бы эквивалентно хранить список клиентов http?

Следует отметить, что я пытаюсь чтобы максимизировать эффективность времени выполнения за счет обработки настройки, поэтому важно установить их перед выполнением каждого запроса.

Спасибо.

...