Как получить токен доступа с помощью GDATA в Java - PullRequest
1 голос
/ 29 января 2011

Я занимаюсь разработкой Java-приложения, в котором я реализую 3-стороннюю OAuth с использованием gdata google в Java. Это приложение зарегистрировано в Google App Engine. На первом этапе я успешно получаю несанкционированный токен запроса. Я храню этот токен в сеансе и создаю ссылку, используя createUserAuthorizationUrl (oauthParameters). Затем, нажав на ссылку, он перенаправляет меня на страницу «Предоставить доступ».

Теперь, хотя я предоставляю доступ, он не показывает мне эту страницу . Но он перенаправляет меня на мой URL обратного вызова. Тем не менее, это кажется правильным. Но он также не добавляет запись под Моя учетная запись . Здесь я храню oauth_token в сеансе.

При перенаправлении URL этой страницы содержит oauth_token и oauth_verifier, оба! Теперь, на этом URL обратного вызова, у меня есть кнопка отправки и установить действие для accessTokenServlet.java. Код этого сервлета следующий:

Теперь я отправляю запрос на получение токена доступа. Мой код:

            GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
            oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
            oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
            oauthParameters.setOAuthType(OAuthParameters.OAuthType.THREE_LEGGED_OAUTH);

            GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(new OAuthHmacSha1Signer());

            oauthParameters.setOAuthToken(request.getSession().getAttribute("oauth_token").toString());
            oauthParameters.setOAuthTokenSecret(request.getSession().getAttribute("oauth_token_secret").toString());

            try {
                String accessToken = oauthHelper.getAccessToken(oauthParameters);
                out.println("Access Token : " + accessToken);
            } catch (OAuthException e) {
                //System.out.print("Response Status : " + response.getStatus());
                out.println("Exception : ");
                e.printStackTrace();
                return;
            }

При нажатии кнопки «Отправить» выводится «Токен доступа:» и ничего! Токен не возвращается!

Я ошибаюсь на этапе авторизации самого токена запроса. Но я не получаю, какая проблема возникла?

1 Ответ

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

Страница с верификатором, на который вы ссылаетесь, должна появиться только в том случае, если вы введете oauth_callback из oob - это означает, что вы будете перемещать верификатор вне диапазона.Я настоятельно рекомендую не использовать oob для отладки.Вместо этого вы должны установить URL-адрес обратного вызова и извлечь верификатор из строки запроса.

В приведенном выше коде я не вижу ничего, что устанавливало бы верификатор в параметрах OAuth, так что, вероятно, это ваша проблема,Вы также не слишком много делаете для обработки ошибок, и это действительно важная часть потока OAuth - например, как только он заработал, попробуйте отменить процесс OAuth и посмотреть, как ваше приложение его обрабатывает.

Вы увидите запись в списке выданных токенов только после того, как полностью завершите процесс и получите обновленный токен доступа.

...