Как вы получаете доступ к службе Google, используя клиент Java? - PullRequest
3 голосов
/ 03 февраля 2011

Я занимаюсь разработкой Java-приложения, которое зарегистрировано в Google Apps Engine (GAE) с именем "searcegadget2".Я реализовал 3-х сторонний OAuth с OAuthHmacSha1Signer ().Я получаю токен доступа правильно и сохраняю его на сеанс (сеанс включен ).

Далее я вызываю сервлет с помощьюссылка на событие клика.Этот сервлет предназначен для доступа к службе электронных таблиц с помощью маркера доступа.Мой код:

            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 для проверки, и они правильно установлены.Но при вызове этого сервлета я получаю только один вывод:

Доступ к службе

Я добавил, gdata-spreadsheet-3.0.jar, но все же это даже не позволяет мне создать сервисный объект !!!В чем проблема?

Кроме того, согласно здесь , «имена приложений предпочтительно должны иметь формат [company-id] - [app-name] - [app-version]. Имя будет использоваться серверами Google для отслеживания источника аутентификации. "Я не знаю, где я могу найти идентификатор своей компании, но имя моего приложения "searcegadget2" и версия "1".

Для справки: Руководство разработчика API таблиц Google: Java , Использование клиентской библиотеки Java , OAuth в клиентских библиотеках протокола данных Google

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

Наконец найдено,

Сервис Google зависит от: гуавы , как упоминается здесь .

0 голосов
/ 03 февраля 2011

Вот пример , который должен вам помочь.

Я думаю, что вы забыли добавить некоторые параметры, такие как область действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...