То, что вы обычно делаете в GWT-приложении для входа в систему с использованием OpenID, является следующим:
LoginInfo loginInfo = new LoginInfo();
UserService userService = UserServiceFactory.getUserService();
loginInfo.setLoginUrl(userService.createLoginURL(returnToUrl));
return loginInfo();
Где returnToUrl - это текущий URL-адрес, который вы хотите перенаправить обратно после проверки.Это работает нормально, если returnToUrl представляет собой простой URL-адрес, такой как http://mydomain.com/go/here
Но поскольку мое приложение работает как контекстный гаджет GMail, оно оборачивается в фрейм, который получает свое содержимое от прокси-сервера Google (googleusercontent.com),Так что это - немного более сложный - URL внутри фрейма, на который я хотел бы перенаправить обратно:
https://jtphjhg2q9h3ul31ifsbvm5hv7717h49 -a-gm-opensocial.googleusercontent.com / gadgets / ifr? Url =http% 3A% 2F% 2Fgorgactsgadget.appspot.com% 2Fgorgadget% 2Fcom.innubili.gorgacts.client.Gorgadget.gadget.xml & container = gm & view = card
Во время регистрации OpenID пользователь несколько раз перенаправляетсяи если returnToUrl не является должным образом закодированными URL-адресами, его части теряются.
Как я выяснил здесь , вам даже в некоторых случаях приходится дважды кодировать URL.Но на этот раз я не могу правильно закодировать URL.
Итак, мои вопросы:
Есть ли у вас какие-либо подсказки, что такое OpenID-return-to-URL должен выглядеть как в контекстном гаджете Gmail?
Или, может быть, немного более простой вопрос: есть ли другой способ, которым я могу получить электронную почту текущего вошедшего в систему пользователя GMail?