2014-05-19 3 views
0

Я пытаюсь получить доступ к OneDrive API из Python. я получаю код авторизации:Код авторизации не работает после перезапуска OneDrive

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)

Тогда я получаю доступ и AUTH лексем:

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

Не могли бы вы добавить более подробную информацию об исключении вы находитесь видя? – ginach

+0

Вот трассировка, которую я получаю, когда пытаюсь снова использовать ключ auth. Строка 20 - ответ = urllib2.urlopen (url, params) .read() https://www.dropbox.com/s/94jqwtzxueh3amm/shot_140519_204632.png – vadimmelnyk

ответ

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

+0

, когда истекает срок обновления токенов? –

+0

В этих ссылках я не вижу никаких прав на сервер –

Смежные вопросы