我正在尝试从Python访问OneDrive API。 我收到了授权码:
url = 'https://login.live.com/oauth20_authorize.srf?client_id=000000004811DD8C&scope=wl.signin%20wl.basic&response_type=code&redirect_uri=http://samplewebsite/sample_page.php'
webbrowser.open(URL)
然后我获得访问权限和身份验证令牌:
code = raw_input('Enter the code that appeared on the page: ')
url = 'https://login.live.com/oauth20_token.srf'
params = urllib.urlencode({
'client_id': 'CLIENT_ID',
'redirect_uri': 'http://samplewebsite/sample_page.php',
'client_secret': 'CLIENT_SECRET',
'code': code,
'grant_type': 'authorization_code'
})
response = urllib2.urlopen(url, params).read()
data = json.loads(response)
之后我执行一些代码,这很好。 但是在关闭应用程序并尝试使用相同的授权代码运行它之后,它会引发异常。问题是什么?或者每次运行程序时都必须获取新的auth代码?
答案 0 :(得分:1)
授权码在1小时后到期。听起来,对于您的场景,您需要使用刷新令牌。请参阅我们支持的OAUTH 2.0流程的以下文档:
http://msdn.microsoft.com/en-us/library/dn631818.aspx
以下服务器端身份验证方案可能也会有所帮助:
https://github.com/liveservices/LiveSDK-for-Windows/tree/master/src/Web/Samples/OAuthServer