如何在没有用户交互的情况下以自动方式访问onedrive?

时间:2015-01-03 22:24:38

标签: python onedrive

我正在尝试访问自己的文档&电子表格通过onedrive' api。我有:

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

(对于我的客户,我也尝试了两种&#34;移动或桌面客户端应用:&#34;设置为&#34;是&#34;以及&#34;否&#34;)< / p>

这将返回用户手动点击的html。由于用户是我,而且我的帐户如何在没有用户互动的情况下访问API?

编辑#1: 对于那些对我正在寻找的内容感到困惑的人来说,这相当于Google的服务帐户(OAuth2):https://console.developers.google.com/project

1 个答案:

答案 0 :(得分:1)

你不能绕过&#34;用户交互。

然而,你非常接近它的工作。如果你想在python中获得访问令牌,你必须通过浏览器来完成。您可以使用Web浏览器库打开默认Web浏览器。它看起来像这样(你的应用程序必须是桌面应用程序):

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")

这将带您进入身份验证页面,登录并同意这些条款(根据范围而有所不同)。它会引导您进入网址的页面:

https://login.live.com/oauth20_desktop.srf?code=<THISISTHECODEYOUWANT>&lc=foo

从浏览器复制此代码,让python脚本将其作为输入。

然后,您可以使用从浏览器收到的代码按照here所述提出请求。

您将收到描述here

的回复