Я пытаюсь получить возможность писать чей-то аккаунт Twitter через Java и Spring Social.Spring Security Twitter Access Token
Всякий раз, когда я запросить доступ на запись через мое приложение на твиттере, я получаю следующее исключение:
org.springframework.social.NotAuthorizedException: Invalid or expired token
org.springframework.social.twitter.api.impl.TwitterErrorHandler.handleClientErrors(TwitterErrorHandler.java:104)
org.springframework.social.twitter.api.impl.TwitterErrorHandler.handleError(TwitterErrorHandler.java:58)
org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:537)
Однако, когда я выключаю доступ, я не получаю это исключение, но я (очевидно) теряю способность писать. Из всех проведенных мной исследований я еще не смог найти ничего о весеннем социальном, за исключением того, что мне нужен токен доступа. Я не могу найти весеннюю социальную документацию, которая говорит мне, где это получить.
Во всяком случае, это в моем контроллере:
@Autowired
ConnectionRepository connectionRepository
private Twitter getTwitter() {
connectionRepository.findPrimaryConnection(Twitter.class).api
}
@RequestMapping(value = "/connect/twitter/connect/twitter")
String loggedIn(Model model) {
if (twitter?.authorized) {
model.addAttribute("screenName", twitter.userOperations().screenName)
twitter.timelineOperations().updateStatus("Welcome to Miami #helloWorld")
HOME
}
else {
"redirect:/twitter"
}
}
Моя реализация ConnectionRepository является базовой для MongoDB. Я не думаю, что это проблема, но если он почти идентичен: https://github.com/CarloMicieli/spring-social-mongo/blob/master/src/main/java/org/springframework/social/connect/mongo/MongoConnectionRepository.java
Вот моя диспетчерская XML:
<bean class="org.springframework.social.connect.web.ConnectController">
<property name="applicationUrl" value="http://localhost:8081/MinnesotaCows/" />
</bean>
<bean class="org.springframework.social.connect.web.ProviderSignInController">
<property name="applicationUrl" value="http://localhost:8081/MinnesotaCows/" />
<property name="signUpUrl" value="/register" />
</bean>
<bean id="twitterConnectionFactory"
class="org.springframework.social.twitter.connect.TwitterConnectionFactory">
<constructor-arg value="bUC8VEWgkfkeTXuTBuxCg" />
<constructor-arg value="5I1CNYKBCkNbsbgL2JfTNdSnSA9JVY4KHI4myxV7k4" />
</bean>
<bean id="connectionFactoryLocator"
class="org.springframework.social.connect.support.ConnectionFactoryRegistry">
<property name="connectionFactories">
<list>
<ref bean="twitterConnectionFactory" />
</list>
</property>
</bean>
<bean id="textEncryptor" class="org.springframework.security.crypto.encrypt.Encryptors"
factory-method="noOpText" />
Примечания: Я бег на локальном хосте. Может ли проблема быть такой? Так как нет обратного вызова? Кроме того, я не использую signUpUrl в ProviderSignInController для чего-либо. Я не совсем уверен, что это такое.
У кого-нибудь есть идеи о том, что я могу делать неправильно - или как я могу точно получить токен доступа через API?
Спасибо за ваше время!