А насчет авторизации, то выглядит она у меня как-то так (я поубирал там лишнее, это метод который отвечает за коннект к API):
def connect(self, url = None, args = None, method='GET', send_files={}):
if url and args:
payload = {
"client_id":"da2c49edb3c32a14c92b",
"client_secret":"SECRET",
"grant_type":"password",
"username":"USER",
"password":"PASS",
"scope":'write'
}
r = requests.post('%s/oauth2/access_token/' % self.HOST, data=payload, headers={"Content-Type": "application/x-www-form-urlencoded;"})
rj = r.json()
access_token = rj['access_token']
token_type = rj['token_type']
token_line = "%s %s" % (token_type, access_token)
try:
r = requests.get('%s%s' % (self.HOST, url), headers = {"Authorization": token_line}, params=args, timeout=1800)
except Exception as e:
return [{"error":"Can\'t connect to ..."}]
else:
if r.status_code == 200:
return r.json()
return {"error":"Oops. Something went wrong. API response: %s " % r.status_code}
Суть: перед каждым коннектом мы авторизуемся и получаем токен, который потом суем в хидер авторизации. срок годности токена - 20 секунд.
в общем, вот такие пироги. Может и не лучший кусок кода, который я когда-либо писал, но работает и вполне все понятно