我设置了一个nextcloud实例,我想使用python脚本从那里下载文件。我的nextcloud实例对所有用户强制执行双因素身份验证,我希望它保持这种方式
我的梦想场景是使用requests
库,因此按照这里的文档https://docs.nextcloud.com/server/15/developer_manual/client_apis/WebDAV/basic.html,我尝试做如下操作:
from requests.auth import HTTPBasicAuth
r = requests.request(
method='get',
url='https://mycloudinstance/index.php/apps/files/?dir=/Test&fileid=431',
auth=('username', 'pass')
)
print(r.status_code)
print(r.text)
这给了我一个401错误,说{“message”:“当前用户未登录”}
当我将上面的URL更改为https://remote.php/dav/myinstance/index.php/apps/files/?dir=/Test&fileid=431时,我得到
ConnectionError(': Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known'))
作为一种替代方法,我尝试使用这个库https://github.com/owncloud/pyocclient,只是想看看我是否可以用它创建一个testfolder(它来自owncloud,但也应该使用nextcloud):
import owncloud
oc = owncloud.Client('https://mycloudinstance')
oc.login('username', 'pass')
oc.mkdir('cooldir')
这给我带来了一个owncloud.owncloud.HTTPResponseError: HTTP error: 401
错误。我认为这可能是因为我只是不正确地使用它,或者是因为2因素身份验证
我不知道如何将webdav协议与python请求库结合使用,也不知道如何获得使用它的双因素授权。有人这样做过吗
非常感谢您的帮助,非常感谢
通过为单个应用程序生成安全密码,可以绕过双因素身份验证
在下一个云中,转到:设置->;个人->;安全性->;创建新的应用程序密码
密码将向您显示一次(并且仅显示一次),请使用它代替脚本中的常规密码
相关问题 更多 >
编程相关推荐