2013-05-02 2 views
2

Привет, может кто-нибудь мне помочь с этим кодом, все идет отлично до этого момента Token accessToken = service.getAccessToken (requestToken, verifier); после этого я получаю эту ошибку ERROR com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor- Тело ответа неверно. Не удается извлечь токен и секрет из этого: «Недопустимый токен запроса» org.scribe.exceptions.OAuthException: Тело ответа неверно. Невозможно извлечь маркер и секрет из этого: «Недопустимый маркер запроса» Я новичок в Java и книжниковorg.scribe.exceptions.OAuthException: Тело ответа неверно. Невозможно извлечь токен и секрет из этого: «Недопустимый токен запроса»

import org.scribe.builder.*; 
import org.scribe.builder.api.*; 
import org.scribe.model.*; 
import org.scribe.oauth.*; 

import com.opensymphony.xwork2.ActionSupport; 

public class SignInTwitter extends ActionSupport { 

private static final long serialVersionUID = -4223895098942228518L; 
private static final String PROTECTED_RESOURCE_URL = "https://api.twitter.com/1/statuses/update.json"; 

public String execute() { 

    OAuthService service = new ServiceBuilder().provider(TwitterApi.class) 
      .apiKey("xxxxxxxxxxxxxxxxx") 
      .apiSecret("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") 
      .callback("http://127.0.0.1:8080/SignInTwitter").build(); 

    // Obtain the Request Token 

    Token requestToken = service.getRequestToken(); 

    String authUrl = service.getAuthorizationUrl(requestToken); 

    Verifier verifier = new Verifier(authUrl); 

    Token accessToken = service.getAccessToken(requestToken, verifier); 

    OAuthRequest request = new OAuthRequest(Verb.POST, 
      PROTECTED_RESOURCE_URL); 
    request.addBodyParameter("status", "this is sparta! *"); 
    service.signRequest(accessToken, request); 
    Response response = request.send(); 
    return "success"; 

} 

} 

Ok я добавил его в код

ERROR com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor- Response    body  is incorrect. Can't extract token and secret from this: 'Invalid request token' 
org.scribe.exceptions.OAuthException: Response body is incorrect. Can't extract token and secret from this: 'Invalid request token' 
at org.scribe.extractors.TokenExtractorImpl.extract(TokenExtractorImpl.java:41) 
at org.scribe.extractors.TokenExtractorImpl.extract(TokenExtractorImpl.java:27) 
at org.scribe.oauth.OAuth10aServiceImpl.getAccessToken(OAuth10aServiceImpl.java:103) 
at org.scribe.oauth.OAuth10aServiceImpl.getAccessToken(OAuth10aServiceImpl.java:84) 
at org.scribe.oauth.OAuth10aServiceImpl.getAccessToken(OAuth10aServiceImpl.java:89) 
at com.lingleonline.webclient.controllers.SignInTwitter.execute(SignInTwitter.java:32) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453) 
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255) 
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176) 
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265) 
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) 
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236) 
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236) 
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) 
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176) 
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265) 
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) 
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236) 
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236) 
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) 
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.lingleonline.webclient.controllers.CheckSession.intercept(CheckSession.java:91) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at com.lingleonline.webclient.controllers.MaintenanceCheck.intercept(MaintenanceCheck.java:74) 
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) 
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511) 
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) 
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:722) 
+0

Опубликовать Ваше StackTrace. –

ответ

0

Убедитесь, что ваш маркер и секрет и действительны. Насколько я понимаю, есть время действия для обоих/обоих.

1

Я получил ту же ошибку, из-за двух причин:

а) из-за неправильного проверяющего

Убедитесь, что вы устанавливаете правильную верификатор (вероятность очень меньше, если вы делаете программно)

б) Неверный вариант писца

писца-1.2.1 имеет некоторые проблемы. Использование scribe-1.3.1 решило эту проблему для меня.

+0

Спасибо! обновление писца тоже решило мою ошибку! – tangrammer

2

вы должны создать requestToken по oauth_token и oauth_verifier в перенаправлены страницы, как это:

http://www.example.com/xxxx? oauth_token = хххххх & oauth_verifier = ххххххх

try{ 
      OAuthService servicetwitter = twitterFacade.getService(); 
      Token requestToken = new Token(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("oauth_token"),FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("oauth_verifier")); 
      String codes_twitter=FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("oauth_verifier"); 
      System.out.println("code_twitter: "+codes_twitter); 
      Verifier verifier_twitter = new Verifier(codes_twitter); 
      Token accessToken_twitter = servicetwitter.getAccessToken(requestToken, verifier_twitter); 
      token_twitter=accessToken_twitter.getToken(); 
      System.out.println("token_twitter : "+token_twitter); 
      loginbean.token=token_twitter; 


    }catch (Exception e) { 
     e.printStackTrace(); 
    } 
+0

Если бы такая же проблема, это правильное решение. Подробнее здесь: https://github.com/fernandezpablo85/scribe-java/issues/560 –

0

См https://github.com/fernandezpablo85/scribe-java/issues/439

, где говорится, что комментируя линию

request.addBodyParameter("status", "this is sparta! *"); 

в

// request.addBodyParameter("status", "this is sparta! *"); 

Тогда он работает .. Это что-то делать с текстом против не получить данные (без понятия, что это такое)

@schcriher Шмидт Кристиан Х. Я имел то же самое проблему и решить ее, установив статус (текст) на запрос (получить данные), как вы упомянули. Спасибо за совет!

См https://dev.twitter.com/discussions/11494