如何使用Java客户端访问Google服务?
作者:互联网
我正在开发一个在Google Apps Engine(GAE)上注册的名为“searcegadget2”的Java应用程序.我已经使用OAuthHmacSha1Signer()实现了3脚OAuth.我正确地获得了Access Token&将其存储在Session上(会话已启用).
接下来,我使用链接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&他们设置得当.但是,在调用此servlet时,我得到的唯一输出是:
Accessing Service
我添加了gdata-spreadsheet-3.0.jar,但它甚至不允许我创建服务对象!问题是什么 ?
此外,根据给定的here,“应用程序名称最好具有[company-id] – [app-name] – [app-version]格式.Google服务器将使用该名称来监视身份验证的来源. “我不知道我在哪里找到我的公司ID,但我的应用名称是“searcegadget2”&版本为“1”.
供参考:Google Spreadsheets API Developer’s Guide: Java,Using the Java Client Library,OAuth in the Google Data Protocol Client Libraries
解决方法:
终于找到了,
标签:java,google-app-engine,google-sheets,oauth 来源: https://codeday.me/bug/20190927/1824409.html