Как получить токен доступа, используя gdata на Java
-
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 и посмотреть, как ваше приложение обрабатывает его.
Вы увидите запись в списке выпущенных токенов только после того, как вы полностью завершили процесс и получили обновленный токен доступа.