Я разрабатываю приложение, которое использует 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?
Следует отметить, что я пытаюсь чтобы максимизировать эффективность времени выполнения за счет обработки настройки, поэтому важно установить их перед выполнением каждого запроса.
Спасибо.