是否有人成功地实现了谷歌身份工具包,一个http://accountchooser.com/的实现。我在这里遵循了最初的步骤,但我仍然有一些问题,因为我不太知道如何处理整个数据流。我在后端使用Clojure / Compojure:
( A)不太明白ID提供者身份验证如何适合我的数据模型
( B)是否有办法为开发设置“callbackURL”。
( C) GITkit / Account Chooser工作流如何允许我的用户注册我的应用程序固有的帐户?
提前感谢
发布于 2011-12-14 19:02:25
问题还不完全清楚,但我已经完成了红宝石中的GITkit的实现,可以为您提供一些提示。
( A)回调URL处理来自身份提供程序的断言。现在,GITKit只执行OpenID,因此URL将在查询参数中或作为POST主体包含OpenID响应。您需要做一些事情: 1)在gitkit API中调用verifyAssertion并传递params/post主体。这将返回包含用户详细信息的JSON响应(假设断言有效)。还有其他一些检查您也应该做,2)决定如何处理断言。如果是现有用户,很可能只是建立一个会话并保存用户ID。如果它是一个新用户,您可以创建一个新帐户并立即启动会话,或者将其推迟并重定向到注册页面。3)呈现HTML/JS通知小部件。您可以返回不同的状态代码和数据来更改流。
GITKit本身并不真正管理会话状态,这取决于您的应用程序。一些参考实现有需要帮助的代码,但它不是API的一部分。这个小部件确实有一些您可以用JS控制的状态(添加帐户、显示登录状态等),并在浏览器中使用本地存储。
文档给出了一些细节和示例代码,说明了应该如何实现这一点。
( B)当然。当调用setConfig()时,URL只是在javascript小部件中配置,可以设置为localhost或任何暂存服务器进行开发。只要你的浏览器能到达它,你就会没事。
( C)所谓“本机”,我想您的意思是他们只使用用户名/密码,而不是使用IDP。如果是这样的话,用户登录时只需输入他们的电子邮件地址。如果该电子邮件地址与已知的IDP匹配,它将尝试使用OpenID进行身份验证,否则如果它是一个新用户,它将重定向到您在小部件中配置的任何注册页面。注册页面将只要求用户创建一个密码,就像你通常会做的那样。您还应该返回帐户是否是userStatus检查中的“遗留”(密码)帐户。
希望这能有所帮助。
https://stackoverflow.com/questions/8467774
复制相似问题