无法使用 Python 登录 Dydra

Unable to log into Dydra using Python

我是 Dydra 的注册用户,正在尝试以编程方式更新其中的存储库。尽管我已经登录,但在尝试更新存储库时出现 401 错误。以下是我的代码:

    username = 'myUsername'
    password = 'myPassword'
    URL = 'http://dydra.com/login'

   with requests.Session() as s:
    resp = s.get(URL)
    soup = BeautifulSoup(resp.text)
    csrfToken = soup.find('meta',{'name':'csrf-token'}).get('content')
    # print csrf_token
    payload = {
    'account[login]':username,
    'account[password]':password,
    'csrfmiddlewaretoken':csrfToken,
    'next':'/'
    }
    print payload

    p = s.post(URL,data=payload, headers=dict(Referer=URL))
    print p.text

    r = s.get('http://dydra.com/myUsername/repoName/sparql')
    print r.text

    for stmt in dataGraph:
        dydraSparqlEndpoint = 'http://dydra.com/myUsername/repoName/sparql'
        queryStringUpload = 'INSERT DATA {%s %s %s}' % stmt
        sparql = SPARQLWrapper(dydraSparqlEndpoint)
        sparql.setQuery(queryStringUpload)
        sparql.method = 'POST'
        sparql.query()

for 语句之前的代码按预期工作。为什么插入语句会导致身份验证错误?我需要在代码中更改什么才能成功登录?

根据 Joshua 和 Artemis 的建议,我找到了登录方式:

       key = my_dydra_key       
       dydraSparqlEndpoint = 'http://dydra.com/username/rep_name/sparql'
       for stmt in dataGraph:
            queryStringUpload = 'INSERT DATA {%s %s %s}' % stmt
            sparql = SPARQLWrapper(dydraSparqlEndpoint)
            sparql.setCredentials(key,key)
            sparql.setQuery(queryStringUpload)
            sparql.method = 'POST'
            sparql.query()

这里重要的是sparql.setCredentials(key,key)。密钥是 Dydra 为您提供的用于以编程方式登录的 API 密钥。重复是因为sparql.setCredentials需要用户名和密码作为参数。