2017-01-19 3 views
1

В настоящее время я работаю над интеграцией Podio, и я наткнулся на статьи, которые не дают ясного ответа, может ли refresh_token истекать сам по себе и каков точный поток получения нового токена обновления в таком случае.Podio Oauth - обновить токен-токен

Статьи:

Podio Refresh token Expiry - это не истекают (ответ от кого-то, кто имеет Подио в имени пользователя, совсем недавно)

https://help.podio.com/hc/en-us/community/posts/206669587-Get-new-refresh-token - он истекает, вы получите его как часть ответа, но не Rly? Существует некоторая дискуссия без вывода

Я спрашиваю об этом, потому что я работал с множеством сервисов и реализацией OAuth, но в первый раз, когда обновляющий токен фактически становится недействительным. Итак, если прошло 28 дней, пользователь должен повторно проверить подлинность? Или только токен признан недействительным, но «грант» все еще существует? Я должен сказать, что это довольно сбивает с толку, потому что я привык подходить к символу ref == refresh, но я понимаю его спецификацию OAuth. Также мы хотим сохранить токен обновления в db. Мне бы хотелось протестировать его, но я не хочу ждать 28 дней.

В документах четко не указано, какова продолжительность токена обновления.

Я бы хотел, чтобы кто-то из Подойо дал ясный ответ об этом. Увеличивают ли токены обновления, только если есть полная бездеятельность (нет вызовов api) или только фиксированная сумма, и в каких случаях (бездействие или время прошло), каков точный поток получения токена обновления и требует ли он повторной аутентификации пользователя?

ответ

5

Здесь есть две части: токен доступа и refresh token.

Терминал доступа истекает через интервал, указанный через атрибут expires_in.

Дата обновления может истекать, если не используется дольше 28 дней. Каждый раз, когда вы используете токен обновления для запроса нового токена доступа, таймер сбрасывается, и у вас есть еще 28 дней до истечения срока действия токена обновления. Если вы регулярно получаете новые токены доступа в течение 28-дневного периода, вы можете гипотетически использовать один и тот же токен обновления на неопределенный срок.

Пример HTTP-запрос, чтобы получить первоначальный маркер доступа и обновление маркеров (значений отредактированных звездочек):

POST /oauth/token HTTP/1.1 
Host: podio.com 
Content-Type: application/x-www-form-urlencoded 
Cache-Control: no-cache 

grant_type=password&username=******&password=******&client_id=******&client_secret=****** 

реакция организм:

{ 
    "access_token": "******9c2", 
    "expires_in": 28800, 
    "token_type": "bearer", 
    "scope": "global:all", 
    "ref": { 
    "type": "user", 
    "id": ****** 
    }, 
    "refresh_token": "******04a" 
} 

Примера запрос для получения нового доступа токен (использует тот же токен обновления):

Примечание: y лишние символы пробела в теле запроса могут вызывать проблемы. Это проблема, с которой я столкнулся, когда я экспериментировал.

Запрос:

POST /oauth/token HTTP/1.1 
Host: api.podio.com 
Content-Type: application/x-www-form-urlencoded 
Cache-Control: no-cache 

grant_type=refresh_token&client_id=******&client_secret=******&refresh_token=******04a 

Response Body:

{ 
    "access_token": "******676", 
    "expires_in": 28800, 
    "token_type": "bearer", 
    "scope": "global:all", 
    "ref": { 
    "type": "user", 
    "id": ****** 
    }, 
    "refresh_token": "******04a" 
} 

Важно отметить, что значение маркера обновления не изменяется и может быть использован повторно для получения новых токенов доступа.


TL; DR - Если вы не используете токен обновления, он истекает через 28 дней. Всякий раз, когда вы используете токен обновления, чтобы получить новый токен доступа, таймер истечения срока действия для обновления токена обновления.

+1

отличный ответ, я предлагаю включить 28-дневную информацию + продление срока службы после каждого использования в ваших документах :) – Raidmaster