Как установить заголовки авторизации для OAuth1.0a - PullRequest
1 голос
/ 04 февраля 2020

Я довольно хорошо знаком с restAPI, но этот вызывает у меня головную боль. Я пытаюсь перенести свои токены OAuth 1.0 в токены OAuth 2.0, используя эту документацию https://developer.xero.com/documentation/oauth2/migrate.

Запрос:

POST https://api.xero.com/oauth/migrate
Content-Type: application/json
Authorization: OAuth oauth_consumer_key="your_consumer_key", oauth_token="your_access_token", 
    oauth_signature_method="RSA-SHA1", oauth_signature="your_signature", oauth_timestamp="1456175435", 
    oauth_nonce="83fd12eb-f578-4403-bd55-247b66efa11a", oauth_version="1.0"

Body: {
    "scope":"your_oauth_2_scopes + offline_access",
    "client_id":"your_app_client_id",
    "client_secret":"your_app_client_secret"
}

Я пытаюсь напишите сценарий в GO, который сделает запрос POST, соберет данные и обновит нашу базу данных.

Теперь меня смущает заголовок авторизации.

Как мне заполните необходимую информацию? В частности, oauth-signature, oauth-timestamp и oauth_nonce. У меня мало опыта работы с OAuth1.0a, и я хотел бы понять поток.

Спасибо!

Редактировать: пытается использовать эту библиотеку https://godoc.org/github.com/gomodule/oauth1/oauth#example -Client-SetAuthorizationHeader

1 Ответ

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

Подпись OAuth1.0a - это набор пар ключ-значение, подписанный вашим закрытым ключом. Этот пример приложения миграции должен дать вам представление о шагах, которые необходимо предпринять для создания подписи, даже если это не Go: OAuth1.0a => Пример миграции маркера OAuth 2 .

Существует также Xero GoLang SDK, в который вы можете покопаться, чтобы помочь с кодом авторизации: xero golang

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

...