Я следовал этому руководству по использованию python sdk.
Использование потока кода авторизации:
mendeley = Mendeley(client_id, client_secret=client_secret, redirect_uri=redirect_uri)
auth = mendeley.start_authorization_code_flow()
# The user needs to visit this URL, and log in to Mendeley.
login_url = auth.get_login_url()
Я использовал ChromeDriver, чтобы указать свои учетные данные в Mendeley login_url
from selenium import webdriver
browser= webdriver.Chrome(chromedriver)
browser.get(login_url)
#sumbit the data
submit_bt = browser.find_element_by_id('bdd-elsPrimaryBtn')
submit_bt.click()
, затем я перенаправляюсь на mi redirect_url
и получаю код
Я делаю почтовый запрос, предоставляя данные приложения mi
oauth_url = 'https://api.mendeley.com/oauth/token'
data={'grant_type': 'authorization_code',
'code': app_code,
'redirect_uri': redirect_uri,
'client_id': client_id,
'client_secret': client_secret}
r = post(oauth_url, data=data
Я получаю хороший ответ <Response [200]>
, а затем следующий шаг - аутентификация
# After logging in, the user will be redirected to a URL, auth_response.
session = auth.authenticate(auth_response)
, но я получаю эту ошибку
...C:\Programming\Anaconda\lib\urllib\parse.py in <genexpr>(.0)
105 def _decode_args(args, encoding=_implicit_encoding,
106 errors=_implicit_errors):
--> 107 return tuple(x.decode(encoding, errors) if x else '' for x in args)
108
109 def _coerce_args(*args):
AttributeError: 'CaseInsensitiveDict' object has no attribute 'decode'