Перенаправление GoDaddy из office365 не возвращает токен обновления

У меня есть приложение, которое синхронизируется с OneDrive. Если пользователь использует Office365 через GoDaddy, а у меня параметр grant_type равен «refresh_token», он не возвращает refresh_token обратно, что, в свою очередь, не позволяет мне обновить имеющийся у меня токен. Я пытался добавить access_type="offline" и prompt="consent" при выполнении запроса POST, но безрезультатно. Помощь?

Вот мой код:

credentials = OpenStruct.new
params = {
      client_id: client_credentials[:key],
      redirect_uri: redirect_url,
      client_secret: client_credentials[:secret],
      refresh_token: refresh_token,
      grant_type: 'refresh_token',
      resource: resource_id,
      access_type: 'offline',
      prompt: 'consent'
} 
RestClient.post(client.token_url, params) # doesn't return refresh_token

person Aiza C.    schedule 09.09.2016    source источник


Ответы (1)


Судя по запросу, похоже, вы обновили токен. Судя по потоку предоставления кода OAuth 2.0, параметры access_type и prompt отсутствуют. Вы можете обратиться ниже для параметра поддержки:

введите здесь описание изображения

И вот пост для справки:

POST /{tenant}/oauth2/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&refresh_token=OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq...
&grant_type=refresh_token
&resource=https%3A%2F%2Fservice.contoso.com%2F
&client_secret=JqQX2PNo9bpM0uEihUPzyrh 
person Fei Xue - MSFT    schedule 12.09.2016
comment
Спасибо за ваш ответ. Без этих двух параметров он все равно не вернет мне refresh_token. Что происходит, так это то, что если я публикую его, и он не перенаправляется на godaddy, он возвращает мне refresh_token. Но когда он делает перенаправление на godaddy, он не возвращает мне refresh_token. - person Aiza C.; 12.09.2016