2015-03-09 4 views
1

В настоящее время я пытаюсь разработать веб-приложение, которое синхронизирует календари с Office365, и до сих пор мне удалось получить пару токенов из системы OAuth от Azure.Недопустимый токен обновления при попытке обновить токен доступа в API Office365

Но, несмотря на то, Refresh маркер, кажется, по крайней мере, срок действия 14 дней, кажется, что всякий раз, когда я пытаюсь обновить свой маркер доступа, я всегда получаю следующее сообщение об ошибке:

OAuth error: "AADSTS70000: Authentication failed. Refresh Token is not valid. 
Trace ID: 47836649-e160-40f0-93d1-f599caf4f665 
Correlation ID: 45714317-5a29-4242-a785-be23269acf19 
Timestamp: 2015-03-09 09:53:18Z" 

Любые идеи ? Благодаря

- редактировать -

Вот запрос, который, чтобы обновить маркер;

//parameters 
refresh_token={refresh_token} 
&grant_type=refresh_token 
&client_id={client_id} 
&client_secret={client_secret} 
&resource=https%3A%2F%2Foutlook.office365.com 

// url 
https://login.windows.net/common/oauth2/token 

- редактировать 2 -

Вот точный ответ JSON я получаю;

{ 
    "error":"invalid_grant", 
    "error_description":"AADSTS70000: Authentication failed. Refresh Token is not valid.\r\nTrace ID: f0b5bc67-9ad5-4a75-b384-393486b31074\r\nCorrelation ID: 05af63f5-989a-4397-924f-58745c9bc964\r\nTimestamp: 2015-03-09 12:21:08Z","error_codes":[70000], 
    "timestamp":"2015-03-09 12:21:08Z", 
    "trace_id":"f0b5bc67-9ad5-4a75-b384-393486b31074", 
    "correlation_id":"05af63f5-989a-4397-924f-58745c9bc964", 
    "submit_url":null, 
    "context":null 
} 

Как указано в http://blogs.msdn.com/b/exchangedev/archive/2014/03/25/using-oauth2-to-access-calendar-contact-and-mail-api-in-exchange-online-in-office-365.aspx, это означает, что мой маркер обновления устарела ... Но я только что сгенерировали через полный механизм авторизации, то есть то, что я не могу понять!

+0

проверить это: http: // www. onlinecode.org/access-token-office-365-using-php/ – Dave

ответ

1

Я думаю, что нашел решение моей проблемы. Лазерные жетоны действительно огромны (около 630 символов для токена обновления), и когда мы сохраняем токен обновления в varchar (255), он усечен, следовательно, недействителен ...

0

Когда вы попытаетесь получить токен доступа в первый раз, вы будете использовать URL-адрес, который вернет ответ. В ответ вы получите токен обновления. Вы можете использовать его, чтобы снова получить токен доступа. Но если вы попробовали тот же url, который используется ранее, вы получите новый токен обновления. Вы не можете использовать первый токен обновления. Вы должны использовать новый токен обновления.

Я думаю, вы используете предыдущий токен обновления.

Посмотрите на эту ссылку: http://blogs.msdn.com/b/exchangedev/archive/2014/03/25/using-oauth2-to-access-calendar-contact-and-mail-api-in-exchange-online-in-office-365.aspx

+0

Я просто редактирую свой вопрос с помощью некоторых журналов, и это происходит в первый раз, когда я делаю этот запрос, так что это не может быть, если я не контролирую потенциальный первый запрос ... Я попытаюсь влезть, чтобы посмотреть, не так ли это, а затем проблема с lib, которую я использую – Talus

+0

Протестировано безрезультатно; поэтому не может быть, что я использую «предыдущий токен обновления», поскольку я не могу даже обновить его в первый раз ... – Talus

+0

Я добавил ответ json в свой первоначальный вопрос; поэтому, согласно вашей ссылке, поскольку у меня есть 'invalid_grant', это означает, что мой токен обновления истек ... но я просто сгенерировал его через полный запрос авторизации всего за 10 секунд до этого запроса! – Talus

0

только предположение, но у вас есть? " в начале ваших параметров. Вы передаете их как часть URL-адреса? Поскольку они должны быть размещены как данные формы в теле запроса, а не как параметры URL-запроса.

+0

Я добавил '?' При сбрасывании его здесь, поэтому его нет в фактическом запросе. Похоже, что это запрос GET; json, который я вставил, есть на POST-запросе, если это может помочь – Talus

+0

, неважно, это POST на самом деле в обоих случаях. – Talus

+0

Еще одна вещь, которую нужно попробовать: Azure может быть очень строгой по URL-адресам ресурсов. Добавьте '/' в конец вашего значения ресурса (или% 2F). –

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