2013-12-10 3 views
5

В API графиков Facebook, как только мы предварительно аутентифицировали пользователя, мы можем напрямую взаимодействовать с API (с сервера), чтобы получить токен с долговременным доступом к странице. Этот долгоживущий токен доступа к странице никогда не истекает. (https://developers.facebook.com/docs/facebook-login/access-tokens/)Может ли поток обновления токена доступа LinkedIn выполнять на сервере?

При чтении документации LinkedIn оказалось, что невозможно получить токен доступа с неопределенным (не истекающим) токеном доступа. Кажется, что они истекают каждые 60 дней. Однако эти токены доступа могут быть обновлены до истечения 60 дней.

Что не совсем ясно из документации, является ли обновление токена доступа доступным только на сервере без взаимодействия с клиентом. Язык документации предполагает, что требуется взаимодействие клиента (браузера), но ничего явно не указано.

Итак, мой вопрос: возможно ли обновить токен доступа LinkedIn, используя только сервер, без взаимодействия с клиентом (браузером)?

Соответствующее LinkedIn справочный материал: https://developer.linkedin.com/documents/handling-errors-invalid-tokens

ответ

13

Как выясняется, токены доступа linkedin не могут быть обновлены без привязки пользователя к подключению. Пожалуйста, обратитесь к первому комментарию here сотрудником LinkedIn, в котором четко указано, что "this refresh will only work if the user is still logged into LinkedIn (authenticated) and the current access token isn't expired. Otherwise, the user will be presented with the login dialog again."

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

Я упоминаю несколько ссылок здесь, которые относятся к проблеме с освежающим LinkedIn oauth2 лексем (надеюсь, что это делает его более понятным для всех, кто борется с той же проблемой):

1) This refresh will only work if the user is still logged into LinkedIn (authenticated) and the current access token isn't expired. Otherwise, the user will be presented with the login dialog again.

2) There is no way to refresh the token using the old authentication token/secret. User needs to log into linkedin in order for you to refresh the tokens. We use this flow as it protects our members and their data in the best possible manner.

3) Refreshing an access token is very simple and can happen without an authorization dialog appearing for the user. In other words, it's a seamless process that doesn't affect your application's user experience. Simply have your application go through the authorization flow in order to fetch a new access token with an additional 60 day life span. When the following conditions exist: -User is still logged into Linkedin.com -The current access token isn't expired (within the 60 life span) We will automatically redirect the user back to your redirect_uri without requiring them to reauthorize your application. If they don't exist, we'll prompt them to login and then redirect them.

4) We have also standardized the duration of the authorization tokens. Previously, members could choose to grant tokens that were as short as one day or as long as forever. Now all tokens are 60 days in length, with the ability for you to extend them in a series of rolling 60 day increments whenever the member comes back to your application. To prevent a bad user experience in your application, be sure to proactively refresh tokens and elegantly route any expired tokens through a refresh flow.

5) As long as the user is logged into LinkedIn and their current access token hasn't expired, you can fetch an access token with a 60 day lifespan the next time the user comes to your application.

+0

Спасибо за ваш ответ! Вы заметите, что найденное вами утверждение все еще немного неоднозначно - его можно было бы понимать как например, если до сих пор у пользователя все еще есть активный сеанс * где-то *, ваш код базы данных может самостоятельно подключаться к обновлению токен, без файлов cookie клиента и такого присутствия. Для чего это стоит, вывод, к которому я пришел, заключается в том, что клиент * * должен быть частью процесса обновления токена. На самом деле, к сожалению, я был бы очень удивлен, если бы это было не так. – rinogo

+1

@rinogo, Да, вы правы.Пользователь должен быть частью процесса обновления токена, поэтому его невозможно достичь только с серверной стороны. – Sangram

+1

Большинство ссылок мертвы –

2

У меня был тот же вопрос, и LinkedIn документы и сообщения на форуме являются запутанными, но я уверен, что теперь, когда это не представляется возможным сделать это программно, без вмешательства пользователя (т.е. пользователю необходимо войти в ваше приложение через LinkedIn auth, чтобы обновить токен).

+1

Вот чего я боялся ... Вы реализовали что-нибудь, чтобы сделать этот процесс повторной аутентификации более гладким/менее неудобным для пользователя? Мне было бы интересно узнать больше о вашем рабочем процессе! – rinogo

+1

Даже я искал то же самое, но я думаю, что нет способа обновить токены toauth2 linkedin без вмешательства пользователя. Я узнал, что таким образом можно обновить токены Facebook, но, к сожалению, это невозможно с помощью ссылки. – Sangram

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