2012-11-26 1 views
0

google에 로그인하기 위해 scribe 예제를 실행하는 중 다음 오류가 표시됩니다. scribe-1.3.1.jar 파일을 사용하고 있습니다. 해결 방법을 알려주십시오.스레드 "main"의 예외 org.scribe.exceptions.OAuthException : 응답 본문이 올바르지 않음

코드는 다음과 같습니다

이 컴퓨터의 시계가 정확 : 이것은 처음에 단지 의견이었다

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

public class googleOaoth { 

    private static final String NETWORK_NAME = "Google"; 
    private static final String AUTHORIZE_URL = "https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token="; 
    private static final String PROTECTED_RESOURCE_URL = "https://docs.google.com/feeds/default/private/full/"; 
    private static final String SCOPE = "https://docs.google.com/feeds/"; 

    public static void main(String[] args) { 
     OAuthService service = new ServiceBuilder().provider(GoogleApi.class).apiKey("Mykey").apiSecret("MySecret").scope(SCOPE).build(); 
     Scanner in = new Scanner(System.in); 

     System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ==="); 
     System.out.println(); 

     // Obtain the Request Token 
     System.out.println("Fetching the Request Token..."); 
     Token requestToken = service.getRequestToken(); 
     System.out.println("Got the Request Token!"); 
     System.out.println("(if your curious it looks like this: " + requestToken + ")"); 
     System.out.println(); 

     System.out.println("Now go and authorize Scribe here:"); 
     System.out.println(AUTHORIZE_URL + requestToken.getToken()); 
     System.out.println("And paste the verifier here"); 
     System.out.print(">>"); 
     Verifier verifier = new Verifier(in.nextLine()); 
     System.out.println(); 

     // Trade the Request Token and Verfier for the Access Token 
     System.out.println("Trading the Request Token for an Access Token..."); 
     Token accessToken = service.getAccessToken(requestToken, verifier); 
     System.out.println("Got the Access Token!"); 
     System.out.println("(if your curious it looks like this: " + accessToken + ")"); 
     System.out.println(); 

     // Now let's go and ask for a protected resource! 
     System.out.println("Now we're going to access a protected resource..."); 
     OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL); 
     service.signRequest(accessToken, request); 
     request.addHeader("GData-Version", "3.0"); 
     Response response = request.send(); 
     System.out.println("Got it! Lets see what we found..."); 
     System.out.println(); 
     System.out.println(response.getCode()); 
     System.out.println(response.getBody()); 

     System.out.println(); 
     System.out.println("Thats it man! Go and build something awesome with Scribe! :)"); 

    } 
} 

코드

=== Google's OAuth Workflow === 

Fetching the Request Token... 

Exception in thread "main" org.scribe.exceptions.OAuthException: Response body is  incorrect. Can't extract token and secret from this: 'Timestamp is too far from current time: 1353931608 

    at org.scribe.extractors.TokenExtractorImpl.extract(TokenExtractorImpl.java:41) 
    at org.scribe.extractors.TokenExtractorImpl.extract(TokenExtractorImpl.java:27) 
    at org.scribe.oauth.OAuth10aServiceImpl.getRequestToken(OAuth10aServiceImpl.java:52) 
    at action.login.googleOaoth.main(googleOaoth.java:34) 
Java Result: 1 
+1

컴퓨터의 시계가 맞습니까? 타임 스탬프'1353931608'은 현지 시간이'Fri Jan 16 17:05:31 GMT 1970'라고 제안합니다. 현재 시간은 약 1000 배 더 큰 타임 스탬프를 가질 것입니다 ... – beny23

+0

그 귀중한 올바른. 답변 감사합니다. – xrcwrn

+0

@ beny23 질문에 대답 해 주시면 OP가 수락 한 것으로 표시 할 수 있습니까? 스택 오버플로에 대해 답이없는 모든 필자 질문을 닫으려고합니다. 감사 –

답변

0

이상 실행 한 후? 1353931608 타임 스탬프는 현지 시간이 Fri Jan 16 17:05:31 GMT 1970임을 나타냅니다. 현재 시간은 약 1000 배 더 큰 타임 스탬프를 가질 것입니다 ...

0

서버 시간이 올바르게 설정되지 않은 것 같습니다. 서버 시간을 수정하십시오. 시간을 수정 한 후 웹 서버를 다시 시작하고 싶을 수 있습니다. - 서버 시간을 변경하십시오. 먼저 웹 서버를 다시 시작하십시오. 작동하지 않으면 컴퓨터를 다시 시작하십시오 ==> 작동합니다! .