0

在运行 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
4

2 回答 2

0

这最初只是一个评论:

你电脑上的时钟正确吗?时间戳1353931608表明您的当地时间是Fri Jan 16 17:05:31 GMT 1970. 当前时间的时间戳大约是大 1000 倍...

于 2012-11-29T09:40:24.840 回答
0

似乎您的服务器时间设置不正确。请更正您的服务器时间,您可能需要在修正时间后重新启动您的网络服务器。- 更改服务器时间。尝试先重新启动 Web 服务器。如果不起作用,请重新启动您的计算机 ==> 它可以工作!.

于 2014-08-19T18:00:18.153 回答