如何使用 java 客户端访问 Google 服务? [英] How do you access Google service using a java client?

查看:53
本文介绍了如何使用 java 客户端访问 Google 服务?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

接下来,我将使用链接 onclick 事件调用 servlet.该 servlet 将使用访问令牌访问电子表格服务.我的代码是:

 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("访问服务");GoogleService googleService = new GoogleService("wise", "searceapps-searcegadget2-1");out.println("
设置参数");googleService.setOAuthCredentials(oauthParameters, new OAuthHmacSha1Signer());out.println("<br/>设置 URl");URL feedUrl = new URL("https://spreadsheets.google.com/feeds/spreadsheets/private/full");out.println("<br/>访问 ResultFeed");SpreadsheetFeed resultFeed = googleService.getFeed(feedUrl, SpreadsheetFeed.class);out.println("

");out.println("响应数据:");out.println("====================================================");out.println("| 标题:" + resultFeed.getTitle().getPlainText());如果 (resultFeed.getEntries().isEmpty()) {out.println("| 未找到任何条目.");} 别的 {列表<电子表格条目>电子表格 = resultFeed.getEntries();for (int i = 0; i

我已经打印了所有的 oauthParameter 用于测试 &它们已正确设置.但是,在调用这个 servlet 时,我得到的唯一输出是:

<块引用>

访问服务

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

另外,根据它给出的 此处,应用程序名称最好采用 [company-id]-[app-name]-[app-version] 格式.Google 服务器将使用该名称来监控身份验证来源."我不知道在哪里可以找到我的公司 ID,但我的应用程序名称是searcegadget2"&版本为1".

参考:Google 电子表格 API 开发人员指南:Java, 使用 Java 客户端库, Google 数据协议客户端库中的 OAuth

解决方案

终于找到了,

Google 服务依赖于:番石榴 提到了 这里.

I am developing a java application which is registered on Google Apps Engine (GAE) with the name "searcegadget2". I have implemented 3-legged OAuth with OAuthHmacSha1Signer(). I am getting the Access Token properly & storing it on Session (session is enabled).

Next, I am calling the servlet using a link onclick event. This servlet is to access the Spreadsheet service using the accesstoken. My code is :

            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("|	No entries found.");
            } else {
                List<SpreadsheetEntry> spreadsheets = resultFeed.getEntries();
                for (int i = 0; i < spreadsheets.size(); i++) {
                    SpreadsheetEntry entry = spreadsheets.get(i);
                    System.out.println("	" + entry.getTitle().getPlainText());
                }
            }
            out.println("=====================================================");
            out.println("</div>");

I have printed all the oauthParameter for testing & they are properly set. But, while calling this servlet, the only output that I am getting is :

Accessing Service

I have added, gdata-spreadsheet-3.0.jar but still it is not even allowing me to create the service object !!! What is the problem ?

Also, as per it given here, "Application names should preferably have the format [company-id]-[app-name]-[app-version]. The name will be used by the Google servers to monitor the source of authentication." I don't know where I find my company id, but my app name is "searcegadget2" & version is "1".

For reference : Google Spreadsheets API Developer's Guide: Java, Using the Java Client Library, OAuth in the Google Data Protocol Client Libraries

解决方案

Finally found,

Google Service has dependency on : guava as it is mentioned here.

这篇关于如何使用 java 客户端访问 Google 服务?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆