Mendeley Python SDK中的身份验证问题



我正在从这里阅读Mendeley文档。我正在尝试在控制台中获取数据,并从教程中使用以下代码

from mendeley import Mendeley
# These values should match the ones supplied when registering your application.
mendeley = Mendeley(client_id, redirect_uri=redirect_uri)
auth = mendeley.start_implicit_grant_flow()
# The user needs to visit this URL, and log in to Mendeley.
login_url = auth.get_login_url()
# After logging in, the user will be redirected to a URL, auth_response.
session = auth.authenticate(auth_response)

现在我不明白auth_response在最后一行的代码中会来自哪里?有人有任何想法吗?谢谢

我能够使用以下代码(完全自动化)进行实验并使其工作。没有用户干预

client_id = 1
client_secret = "XXXXXXXXX"
redirect_uri = "http://localhost:8080/testing"
from mendeley import Mendeley
# These values should match the ones supplied when registering your application.
mendeley = Mendeley(client_id, redirect_uri=redirect_uri)
auth = mendeley.start_implicit_grant_flow()
# The user needs to visit this URL, and log in to Mendeley.
login_url = auth.get_login_url()
import requests
res = requests.post(login_url, allow_redirects = False, data = {
    'username': 'xxxx@gmail.com',
    'password': 'xxxxx'
})
auth_response = res.headers['Location']
# After logging in, the user will be redirected to a URL, auth_response.
session = auth.authenticate(auth_response)
print(session.files.list().items)

最后一行打印[<mendeley.models.files.File object at 0x1115b5400>],这意味着访问如果工作

从我可以看出的情况下,auth_response由用户/服务器提供。例如,我在github上找到了这个不错的代码块(此处提供完整来源:链接):

@app.route('/oauth')
def auth_return():
    auth = mendeley.start_authorization_code_flow(state=session['state'])
    mendeley_session = auth.authenticate(request.url)
    session.clear()
    session['token'] = mendeley_session.token
    return redirect('/listDocuments')

您可以看到,作者似乎正在将客户端重定向到原始请求。

最新更新