Как получить доступ к onedrive в автоматическом режиме без участия пользователя?
Я пытаюсь получить доступ к своим собственным документам и таблицам через API onedrive. Я имею:
import requests
client_id = 'my_id'
client_secret = 'my_secret'
scopes = 'wl.offline_access%20wl.signin%20wl.basic'
response_type = 'token' # also have tried "code"
redirect_uri = 'https://login.live.com/oauth20_desktop.srf'
base_url = 'https://apis.live.net/v5.0/'
r = requests.get('https://login.live.com/oauth20_authorize.srf?client_id=%s&scope=%s&response_type=%s&redirect_uri=%s' % (client_id, scopes, response_type, redirect_uri))
print r.text
(Для моего клиента я также попробовал "Мобильное или настольное клиентское приложение": установите "Да" и "Нет")
Это вернет HTML-код, по которому пользователь может щелкнуть вручную. Поскольку пользователь - это я, и это моя учетная запись, как я могу получить доступ к API без взаимодействия с пользователем?
РЕДАКТИРОВАТЬ #1: Для тех, кто запутался в том, что я ищу, это будет эквивалентно учетной записи службы Google (OAuth2): https://console.developers.google.com/project
1 ответ
Вы не можете "обойти" взаимодействие с пользователем.
Однако вы очень близки к тому, чтобы заставить его работать. Если вы хотите получить токен доступа в Python, вы должны сделать это через браузер. Вы можете использовать библиотеку веб-браузера, чтобы открыть веб-браузер по умолчанию. Это будет выглядеть примерно так (ваше приложение должно быть настольным):
import webbrowser
webbrowser.open("https://login.live.com/oauth20_authorize.srf?client_id=foo&scope=bar&response_type=code&redirect_uri=https://login.live.com/oauth20_desktop.srf")
Это приведет вас на страницу авторизации, войдите в систему и примите условия (они будут отличаться в зависимости от области). Он направит вас на страницу, где URL выглядит так:
https://login.live.com/oauth20_desktop.srf?code=<THISISTHECODEYOUWANT>&lc=foo
Скопируйте этот код из браузера и сделайте так, чтобы ваш скрипт Python принял его в качестве входных данных.
Затем вы можете сделать запрос, как описано здесь, используя код, полученный из браузера.
Вы получите ответ, описанный здесь