有人在PHP中成功实现了google identity Toolkit吗?

时间:2011-09-21 08:32:10

标签: php git api openid google-openid

我正在尝试用PHP和Javascript实现Google Identity Toolkit

我已经定义了7个案例 回调网址:登录网址:用户状态注册网址:退出网址:主页网址:忘记网址:

和小部件并获得了一个api密钥..我正在尝试执行与谷歌提供的以下示例相同的功能

https://account-chooser.appspot.com/

我在让google验证登录时遇到问题。我做错了 verifyAssertion (在php中用curl完成)或

window.google.identitytoolkit.notifyFederatedSuccess({ "email": "email@domain.com", "registered": true });

这就是我所遇到的问题和问题: 谷歌有这个小部件,首先显示你的钥匙图标登录,你点击它,然后你选择谷歌帐户或雅虎或其他什么(这部分都可以) 例如,你使用你的谷歌帐户,然后弹出一个弹出窗口,GIT做他的魔法(将回调你的回调网址),然后根据你的回调响应重定向到你的站点帐户登录或错误。 在这种情况下会发生什么,它实际上会重新定向到我的网站帐户登录,但小部件并没有显示我实际上已登录。不像谷歌的示例页面.. 它仍然显示密钥签名小部件......

我正在做一些事情,我不知道如何解决它......

这里有一些谷歌的更多参考资料。它有点没有文档(createAuthUrl我甚至没用过..不知道是什么用)

http://code.google.com/apis/identitytoolkit/v1/reference.html

http://code.google.com/apis/identitytoolkit/v1/acguide.html 我在示例中使用EasyRpService实现了verifyAssertion 什么是奇怪的是响应是NULL并且HTTP ERROR代码也是NULL ..no 4xx也不是200

有没有人实现过这个?

1 个答案:

答案 0 :(得分:1)

小部件不会自动更新。您需要做两件事:

1)确保您在身份验证后更新登录用户。登录后您的主页应该有一段javascript,如:

<script type="text/javascript">
  var userData = {
    email: 'name@idp.com', // required
    displayName: 'User Name', // optional
    photoUrl: 'http://website.com/img/user.png', // optional
  };
  window.google.identitytoolkit.updateSavedAccount(userData);
</script>

这可确保用户详细信息位于浏览器的本地存储中,这是帐户选择器在下次登录时显示其详细信息所必需的。

此外,要在窗口小部件中显示已记录的用户,您需要在初始化窗口小部件时调用showSavedAccount。

<script type='text/javascript'>
  window.google.identitytoolkit.showSavedAccount("logged-in-user@domain.com");
  $("#navbar").accountChooser();
</script>
<div id="navbar"></div>