当前位置: 首页 > 面试题库 >

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

黄流觞
2023-03-14
问题内容

我正在开发一个Java应用程序,该应用程序 在Google Apps Engine(GAE)上注册,名称为“
searcegadget2”。我已经用OAuthHmacSha1Signer()实现了 三足式OAuth 。我正在 正确
获取访问令牌并将其存储在 会话中启用了 会话)。

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

            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进行测试,并且它们已经正确设置。但是,在调用此servlet时,我得到的唯一输出是:

访问服务

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

另外,按照此处的说明,“应用程序名称最好采用[company-
id]-[app-name]-[app-version]格式。Google服务器将使用该名称来监视身份验证源。 ”
我不知道在哪里找到公司ID,但我的应用程序名称为“ searcegadget2”,版本为“ 1”。

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


问题答案:

终于找到了,

谷歌服务的依赖已经对:番石榴,因为它提到这里。



 类似资料:
  • 我已经在本地机器中配置了minikube,并打算在外部使用kubernetes。我在kubernetes中创建了一个服务帐户,使用它的秘密,我可以使用下面的命令获得访问令牌。 我正在以贝娄启动配置。 我能知道如何使用fabric8 java客户端获得上面描述的serviceAccountAccessToken吗?

  • 我试图在一个Spring引导应用程序中使用keyCloak管理客户端来改变keyCloak中用户的角色,但是我甚至不能实例化keyCloak。 我正在尝试在这里获取KeyClope服务器,但是我得到了一个实例化错误

  • 24.10 在客户端访问RESTful服务 RestTemplate是客户端访问RESTful服务的核心类。它在概念上类似于Spring中的其他模板类,例如JdbcTemplate、 JmsTemplate和其他Spring组合项目中发现的其他模板类。 RestTemplate’s behavior is customized by providing callback methods and c

  • 我是NodeJS的新手。假设我有一个用Golang的websocket包实现的echo服务器: nodejs客户机代码应该是什么样子?

  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • 我们正在开发一个IOS应用程序,它使用GoogleSignIn和GoogleAPIClientForREST来获取用户的日历。 正常的流程是客户端用户登录Gmail,然后对其进行授权,然后客户端获得访问令牌,并使用该令牌来请求用户的日历, 现在我们想要这样做,我们的应用程序获取访问令牌,将令牌上传到我们的服务器,然后服务器使用令牌请求用户的日历,最终,我们的服务器将定期使用大量不同用户的访问令牌来