2015-03-17 5 views
0

У меня есть токен доступа из собственного приложения Android. Я тестировал его через отладчик Graph API и его активность в течение следующих двух месяцев. Созданный шаблон Facebook с тем же токеном доступа. Когда я пытаюсь использовать шаблон.isAuthorized, он возвращает true. Но когда я пытаюсь получить доступ к template.userOperations, выполните следующую ошибку, пожалуйста, помогите.Я использую Spring Social framework. Получение org.springframework.social.MissingAuthorizationException с соответствующим токеном доступа

Exception in thread "main" java.lang.NoSuchMethodError: org.springframework.social.MissingAuthorizationException: method <init>(Ljava/lang/String;)V not found 
    at org.springframework.social.facebook.api.impl.FacebookErrorHandler.handleFacebookError(FacebookErrorHandler.java:89) 
    at org.springframework.social.facebook.api.impl.FacebookErrorHandler.handleError(FacebookErrorHandler.java:65) 
    at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:486) 
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:443) 
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:415) 
    at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:213) 
    at org.springframework.social.facebook.api.impl.FacebookTemplate.fetchConnections(FacebookTemplate.java:222) 
    at org.springframework.social.facebook.api.impl.FacebookTemplate.fetchConnections(FacebookTemplate.java:216) 
+0

Что такое код, который выдает эту ошибку – beresfordt

+0

государственной статической силы основных (String [] арг) { \t \t Строка = маркер доступа "XXX"; \t \t FacebookTemplate facebook = новый FacebookTemplate (accessToken); \t \t if (facebook.isAuthorized()) { \t \t \t System.out.println ("Авторизованный"); \t \t UserOperations userOperations = facebook.userOperations(); \t \t FacebookProfile facebookProfile = userOperations.getUserProfile(); \t \t String birthDate = facebookProfile.getBirthday(); \t \t Строка firstName = facebookProfile.getFirstName(); \t \t} else { \t \t \t System.out.println ("Неавторизованный"); \t \t \t \t \t} вместо XXX я предоставил accesstoken из своего родного приложения для Android. – Rajarajeswari

+0

Не могли бы вы поместить это в тело своего поста; более читабельный, чем комментарий – beresfordt

ответ

1

StackTrace немного вводит в заблуждение, потому что вы на самом деле, глядя на java.lang.NoSuchMethodError в классе org.springframework.social.MissingAuthorizationException.

В частности, он жалуется на method <init>(Ljava/lang/String;)V not found или другими словами: конструктор, который принимает параметр string, не существует в вышеупомянутом классе.

Мне кажется, что вы используете довольно старую версию Spring, скорее всего, версию 1.0.x. То есть сравнить конструкторы для версии 1.0.3 и 1.1.0:

1.0.3: public MissingAuthorizationException()

1.1.0: public MissingAuthorizationException(String providerId)

Ваша проблема должна быть решена, как только вы переключитесь на версию Spring, который имеет конструктор MissingAuthorizationException с параметрами string.

// edit: конструктор был изменен на идентификатор провайдера в октябре 2012 года. This commit, если быть точным.

+0

Привет @MH Спасибо за немедленный ответ. Вот полный stacktrace :::: Авторизованный org.springframework.web.client.RestTemplate handleResponseError ПРЕДУПРЕЖДЕНИЕ: запрос GET для «https: //graph.facebook .com/me "привело к 400 (Bad Request); вызывать обработчик ошибок {"error": {"message": "Активный токен доступа должен использоваться для запроса информации о текущем пользователе.", "type": "OAuthException", "code": 2500}} Исключение из thread "main" java.lang.NoSuchMethodError: org.springframework.social.MissingAuthorizationException: метод (Ljava/lang/String;) V не найден – Rajarajeswari

+0

@Rajarajeswari: Это не меняет мой ответ. :) Я бы не слишком беспокоился о сообщении об ошибке json. Ключ находится в последней строке. –

+0

Спасибо @MH Это сработало. – Rajarajeswari