Двойное резервное копирование на ошибку клиента onedrive

Я пытаюсь сделать резервную копию файлов на моем компьютере в onedrive с двуличностью. Я установил все зависимости, при запуске duplicity создается сгенерированная ссылка авторизации, которую я должен открыть в браузере, а затем в duplicity после предоставления разрешений для приложения вставить возвращаемый URL.

Я делаю все эти шаги, но двуличность возвращает меня

Traceback (most recent call last):
  File "/usr/bin/duplicity", line 1532, in <module>
    with_tempdir(main)
  File "/usr/bin/duplicity", line 1526, in with_tempdir
    fn()
  File "/usr/bin/duplicity", line 1364, in main
    action = commandline.ProcessCommandLine(sys.argv[1:])
  File "/usr/lib/python2.7/site-packages/duplicity/commandline.py", line 1116, in ProcessCommandLine
    backup, local_pathname = set_backend(args[0], args[1])
  File "/usr/lib/python2.7/site-packages/duplicity/commandline.py", line 1005, in set_backend
    globals.backend = backend.get_backend(bend)
  File "/usr/lib/python2.7/site-packages/duplicity/backend.py", line 223, in get_backend
    obj = get_backend_object(url_string)
  File "/usr/lib/python2.7/site-packages/duplicity/backend.py", line 209, in get_backend_object
    return factory(pu)
  File "/usr/lib/python2.7/site-packages/duplicity/backends/onedrivebackend.py", line 90, in __init__
    self.initialize_oauth2_session()
  File "/usr/lib/python2.7/site-packages/duplicity/backends/onedrivebackend.py", line 153, in initialize_oauth2_session
    authorization_response=redirected_to)
  File "/usr/lib/python2.7/site-packages/requests_oauthlib/oauth2_session.py", line 232, in fetch_token
    self._client.parse_request_body_response(r.text, scope=self.scope)
  File "/usr/lib/python2.7/site-packages/oauthlib/oauth2/rfc6749/clients/base.py", line 409, in parse_request_body_response
    self.token = parse_token_response(body, scope=scope)
  File "/usr/lib/python2.7/site-packages/oauthlib/oauth2/rfc6749/parameters.py", line 376, in parse_token_response
    validate_token_parameters(params)
  File "/usr/lib/python2.7/site-packages/oauthlib/oauth2/rfc6749/parameters.py", line 383, in validate_token_parameters
    raise_from_error(params.get('error'), params)
  File "/usr/lib/python2.7/site-packages/oauthlib/oauth2/rfc6749/errors.py", line 271, in raise_from_error
    raise cls(**kwargs)
InvalidClientError: (invalid_client) The client does not exist. If you are the application developer, configure a new application through the application management site at https://manage.dev.live.com/.

Похоже, что нет приложения с идентификатором, с которым дублирование создает аутентификационную ссылку. Но когда я перехожу по ссылке, предоставленной duplicity, я вижу, что "Duplicity запрашивает разрешения".

Так я должен добавить свое собственное приложение и каким-то образом предоставить его идентификатор для двуличности? (Я искал, как это сделать, но безрезультатно) или это ошибка двойственности?

1 ответ

Решение

Для любого программного взаимодействия с Windows Live требуется идентификатор клиента, который однозначно идентифицирует ваше приложение для Windows Live. Ваше приложение должно включать идентификатор клиента в каждый запрос, который оно отправляет в службу Messenger Connect API.

Вы должны зарегистрировать свое приложение, как показано в этом официальном руководстве по Windows Live: https://msdn.microsoft.com/en-us/library/ff751474.aspx

А затем передайте свой идентификатор приложению, чтобы иметь возможность аутентификации в Windows Live во время выполнения при запросе к API.

Вы можете использовать код в https://github.com/fkalis/bash-onedrive-upload который также обеспечивает полную поддержку для загрузки файлов, размер которых превышает 100 МБ.

Другие вопросы по тегам