Как получить токен доступа, используя gdata на Java

StackOverflow https://stackoverflow.com/questions/4836781

  •  27-10-2019
  •  | 
  •  

Вопрос

Я разрабатываю приложение Java, в котором я внедряю 3-ногированный OAuth, используя Google GData в 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;
            }

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

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

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top