Bitbucket API с двухфакторной аутентификацией

Я хочу использовать Rest API Bitbucket с включенной двухфакторной аутентификацией Bitbucket, чтобы я мог управлять своей учетной записью с помощью curl через терминал. Раньше я делал вызовы REST API без 2FA, а теперь хочу сделать этот переход.

При включенной двухфакторной аутентификации вам необходимо использовать протокол OAuth 2.0 для выполнения вызовов API; вместо стандартных вызовов REST API, которые вы найдете на сайте Bitbucket.

Теперь я дошел до создания так называемого потребителя на веб-сайте Bitbucket. Это генерирует ключ и секрет.

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

https://bitbucket.org/site/oauth2/authorize?client_id={client_id}&response_type=code

, что вы можете сделать с помощью команды curl

$ curl -X POST -u "client_id:secret" \ https://bitbucket.org/site/oauth2/access_token \ -d grant_type=authorization_code -d code={code}.

Я не знаю, как получить этот токен доступа; т. е. шаг от вызова команды curl до ее включения в переменную Bash.

Получив токен доступа, мы можем отправлять запросы к API, включив его в нашу команду curl в соответствии с Документация по Bitbucket. Я полагаю, что-то вроде,

curl -u "client_id:secret" https://api.bitbucket.org/2.0/[API Request] --data-urlencode "access_token=$[Access_token]" --data "[api_request_data]=[Api_request_data]"

, где $[Access_token] — это наша переменная Bash, содержащая наш неистекший токен доступа.

Я хочу создать две функции, реализованные в Bash: одну для получения токена доступа; и один для обновления маркера доступа. Или есть более простой способ?

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


person Mussé Redi    schedule 01.12.2016    source источник
comment
Сначала вам нужно получить временный код. Который вы получите, перенаправив пользователя на первый URL-адрес, который у вас есть, передав ваш client_id. Затем в обратном вызове вам нужно извлечь код (временный код). После этого вы можете запросить токен доступа, передав client_id, секрет и временный код, выполнив запрос с упомянутым вами CURL. В ответ будет включен токен доступа, который вы должны сохранить, чтобы запросить необходимую информацию.   -  person Hosar    schedule 01.12.2016


Ответы (1)


Вы можете использовать «пароль приложения» Bitbucket. Подробнее здесь.

person Brian Edwards    schedule 01.12.2016