Вход в OpenID в контекстном гаджете GMail с использованием GWT - PullRequest
1 голос
/ 30 марта 2011

То, что вы обычно делаете в 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?

1 Ответ

2 голосов
/ 11 ноября 2011

Вы не можете использовать вход OpenId из гаджета, потому что ваш гаджет проксируется контейнером гаджета.Вы должны открыть всплывающее окно для входа в систему openId и связать opensocialId с вашим идентификатором openId на сервере.Вы должны сохранить связь между openSocialId и идентификацией пользователя на сервере.С этого момента гаджет узнает свою личность, запрашивая отношение его opensocialId.

см. Также http://code.google.com/googleapps/marketplace/best_practices.html#gadget_sso

...