2013-06-18 22 views
0

У меня есть проблемы с весной-social-api для linkedin. По истечении 60 дней токен доступа истекает, и я не могу использовать его для публикации на временной шкале для пользователя токена доступа. Есть способ пройти эту ошибку?Linkedin Обновление токена доступа

ответ

0

Повторяя мой ответ от http://forum.springsource.org/showthread.php?138943-Linkedin-refresh-accesstoken:

Хотя я не могу честно сказать, что я пытался сделать это с LinkedIn, вы должны быть в состоянии получить соединение (через ConnectionRepository) и вызывать обновление() на нем. Фактически, это должно работать с любым API, защищенным OAuth2 (за исключением Facebook, который не совсем играет по спецификации OAuth2).

Я еще не пробовал это с LinkedIn, потому что до недавнего времени Spring Social работала с LinkedIn через их аутентификацию OAuth 1.0a. Но это звучит неплохо, чтобы проверить.

Поэтому Spring Social поддерживает обновление токенов доступа. Но это ручное усилие с вашей стороны: (1) поймать ExpiredAuthorizationException, (2) использовать ConnectionRepository для извлечения соединения и (3) refresh() для обновления соединения.

Что было бы более удивительным, если Spring Social каким-то образом поймала это ExpiredAuthorizationException для вас, автоматически вызовет refresh(), а затем повторно запустит вызов, вызвавший исключение; делая его бесшовным для вызывающего. Это то, о чем я размышлял, но пока нет никакой реализации.

Одним из возможных решений является аспект. Но разработчик должен будет настроить его для надлежащего переноса любых типов привязки API (например, LinkedInTemplate), которые использует приложение. Еще один вариант, о котором я подумал, - это выкопать в AbstractOAuth2ApiBinding и настроить RestTemplate, который он предоставляет для обработки этого исключения. Это немного зависит от того, может ли он работать, но если это сработает, тогда любая привязка API, которая расширяет AbstractOAuth2ApiBinding, автоматически получит возможность обновления ... кроме того, снова для Facebook, который не играет по правилам OAuth2.

+0

Проверка документов здесь Я думаю, что механизм LinkedIn для «обновления» токена доступа на самом деле совпадает с исходным процессом авторизации. Похоже, что они не предоставляют токены обновления, которые могут быть использованы для получения программных программных токенов доступа с помощью API-интерфейса бэкэнда. refresh() не будет обрабатывать этот случай, не так ли? Похоже, вам нужно будет периодически отправлять пользователей через поток авторизации для поддержания нового токена. http://developer.linkedin.com/documents/handling-errors-invalid-tokens – sdouglass

+0

Право. После того, как я написал этот ответ, я понял, что LinkedIn не реализует токены обновления и вместо этого требует повторного запуска потока авторизации (Facebook делает это так же). Это немного раздражает, что он отличается от спецификации, но, возможно, более безопасен таким образом. В любом случае, ReconnectFilter от Spring Social должен отлично справляться с этим сценарием. Теперь он доступен в Spring Social 1.1.0.M3. –

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