如何使用Java客户端访问Google服务?

时间:2011-02-03 06:38:57

标签: java google-app-engine oauth google-sheets

我正在Google Apps Engine(GAE)上开发一个名为“searcegadget2”的已注册的Java应用程序。我已经使用OAuthHmacSha1Signer()实现了 3-legged OAuth 。我正在获取访问令牌正确&将其存储在会话(会话已启用)。

接下来,我使用链接onclick事件调用servlet。此servlet用于使用accesstoken访问Spreadsheet服务。我的代码是:

            GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
            oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
            oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
            oauthParameters.setOAuthType(OAuthParameters.OAuthType.THREE_LEGGED_OAUTH);
            oauthParameters.setScope("https://spreadsheets.google.com/feeds/");
            oauthParameters.setOAuthToken(request.getSession().getAttribute("oauth_token").toString());
            oauthParameters.setOAuthVerifier(request.getSession().getAttribute("oauth_verifier").toString());
            oauthParameters.setOAuthTokenSecret(request.getSession().getAttribute("oauth_token_secret").toString());



            out.println("Accessing Service");
            GoogleService googleService = new GoogleService("wise", "searceapps-searcegadget2-1");
            out.println("<br/>Setting Parameter");
            googleService.setOAuthCredentials(oauthParameters, new OAuthHmacSha1Signer());
            out.println("<br/>Setting URl");
            URL feedUrl = new URL("https://spreadsheets.google.com/feeds/spreadsheets/private/full");
            out.println("<br/>Accessing ResultFeed");
            SpreadsheetFeed resultFeed = googleService.getFeed(feedUrl, SpreadsheetFeed.class);

            out.println("<div id='feed'>");
            out.println("Response Data:");
            out.println("=====================================================");
            out.println("| TITLE: " + resultFeed.getTitle().getPlainText());
            if (resultFeed.getEntries().isEmpty()) {
                out.println("|\tNo entries found.");
            } else {
                List<SpreadsheetEntry> spreadsheets = resultFeed.getEntries();
                for (int i = 0; i < spreadsheets.size(); i++) {
                    SpreadsheetEntry entry = spreadsheets.get(i);
                    System.out.println("\t" + entry.getTitle().getPlainText());
                }
            }
            out.println("=====================================================");
            out.println("</div>");

我已经打印了所有用于测试的oauthParameter&amp;他们设置得当。但是,在调用此servlet时,我得到的唯一输出是:

  

访问服务

我已经添加了gdata-spreadsheet-3.0.jar,但它仍然不允许我创建服务对象!有什么问题?

此外,根据here,“应用程序名称最好具有[company-id] - [app-name] - [app-version]格式。该名称将由Google服务器使用监控身份验证的来源。“我不知道我在哪里找到我的公司ID,但我的应用名称是“searcegadget2”&amp;版本为“1”。

供参考:Google Spreadsheets API Developer's Guide: JavaUsing the Java Client LibraryOAuth in the Google Data Protocol Client Libraries

2 个答案:

答案 0 :(得分:1)

终于找到了,

Google服务依赖于guava,因为它被称为here

答案 1 :(得分:-1)

这里有example可以帮到你。

我认为您忘记添加一些参数,例如范围。