Я реализовал 3-х сторонний протокол OAuth, используя Google OAuth API в Java.
Моя заявка зарегистрирована на GAE. И я также успешно получаю токен доступа. Но теперь, когда я создаю объект UserService, даже если я вошел в Gmail, а также в свой личный почтовый домен, он возвращает null при вызове getCurrentUser ()!
Мой код:
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
oauthParameters.setScope("https://spreadsheets.google.com/feeds/");
oauthParameters.setOAuthType(OAuthParameters.OAuthType.THREE_LEGGED_OAUTH);
oauthParameters.setOAuthToken(request.getSession().getAttribute("oauth_token").toString());
oauthParameters.setOAuthTokenSecret(request.getSession().getAttribute("oauth_token_secret").toString());
UserService userService = UserServiceFactory.getUserService();
out.println("<br/>Get Current User : " + userService.getCurrentUser());
Нет необходимости специально добавлять любой jar при использовании User Service. Тогда в чем здесь проблема?
Также, когда я пытаюсь это сделать:
out.println(userService.isUserLoggedIn() ? "User is Logged In" : "User is Log Off");
Выводит:
Пользователь отключен
пока я вхожу в свой личный домен и в Gmail оба! Я думаю, это должно перенаправить меня на страницу входа в случае, если я выйду из системы. Но это не так!
Кроме того, согласно здесь & in systempuntout Ответ, если я попытаюсь:
OAuthService oauth = OAuthServiceFactory.getOAuthService();
User user = oauth.getCurrentUser();
out.println("<br/>Get Current User : " + user.getNickname());
Тем не менее, он останавливает выполнение! (
В журнале Google App Engine появляется следующая ошибка:
Oauth.requestServlet doGet: null
com.google.appengine.api.oauth.InvalidOAuthParametersException: Unknown
at com.google.appengine.api.oauth.OAuthServiceImpl.makeSyncCall(OAuthServiceImpl.java:73)
at com.google.appengine.api.oauth.OAuthServiceImpl.getGetOAuthUserResponse(OAuthServiceImpl.java:53)
at com.google.appengine.api.oauth.OAuthServiceImpl.getCurrentUser(OAuthServiceImpl.java:28)
at Oauth.accessFeeds.access(accessFeeds.java:60)
at Oauth.requestServlet.processRequest(requestServlet.java:129)
at Oauth.requestServlet.doGet(requestServlet.java:199)
Для справки: Использование службы пользователей
Для API: com.google.appengine.api.oauth , com.google.appengine.api.users
Это (наименьшая возможная) ошибка с Google OAuth?