线程" main"中的例外情况org.scribe.exceptions.OAuthException:响应正文不正确

时间:2012-11-26 12:13:52

标签: java oauth-2.0 scribe

在运行scribe的示例以使用google登录时,它显示以下错误。 我正在使用scribe-1.3.1.jar文件。 请告诉我如何解决它。

代码是:

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

2 个答案:

答案 0 :(得分:0)

这最初只是一个评论:

计算机上的时钟是否正确?时间戳1353931608表示您的当地时间为Fri Jan 16 17:05:31 GMT 1970。当前时间的时间戳大约是1000倍......

答案 1 :(得分:0)

您的服务器时间似乎未正确设置。请更正您的服务器时间,您可能需要在修复时间后重新启动Web服务器。   - 更改服务器时间。首先尝试重启Webserver。如果不起作用,请重新启动计算机==>这行得通!