Итак, как я решил эту проблему (используя OAuth-интерфейс BitBucket), указав URL-адрес обратного вызова для localhost (или как там, черт возьми, вы действительно хотите), а затем следуя URL-адресу авторизации с помощью curl, но с поворотом возврата HTTP заголовок. Пример:
curl --user BitbucketUsername:BitbucketPassword -sL -w "%{http_code} %{url_effective}\\n" "AUTH_URL" -o /dev/null
Вставка учетных данных и URL-адреса авторизации (не забудьте экранировать восклицательный знак!).
То, что вы должны получить, выглядит примерно так:
200 http://localhost?dump&oauth_verifier=OATH_VERIFIER&oauth_token=OATH_TOKEN
И вы можете очистить от этого присягу.
То же самое в python:
import pycurl
devnull = open('/dev/null', 'w')
c = pycurl.Curl()
c.setopt(pycurl.WRITEFUNCTION, devnull.write)
c.setopt(c.USERPWD, "BBUSERNAME:BBPASSWORD")
c.setopt(pycurl.URL, authorize_url)
c.setopt(pycurl.FOLLOWLOCATION, 1)
c.perform()
print c.getinfo(pycurl.HTTP_CODE), c.getinfo(pycurl.EFFECTIVE_URL)
Надеюсь, это кому-нибудь пригодится!