我维护一个用C++和JavaScript编写的旧网络应用程序。我被要求添加Facebook、Google和Twitter登录认证。
Facebook部分很顺利。我在Facebook的开发者网站上找到了一些简单的JavaScript代码,链接是http://developers.facebook.com/docs/reference/javascript/,我将它添加到我的登录页面中。然后我修改了C++登录cgi程序,使其能够识别来自Facebook的回调,并使用用户的电子邮件地址(已经存在于文件中)登录。
我卡在了Google那里。起初,我在Google网站上瞎搞,但我找不到任何简单的例子。我被引导到了libopkele C++库,但我找不到如何使用它的说明(我怀疑这不是我需要的)。然后我找到了一个叫做Google Friend Connect的东西,链接是http://code.google.com/apis/friendconnect/docs/code.html(不幸的是,它说它已经过时了)。它包含了一个漂亮的JavaScript示例,我将它放到了我的网站上。它提供了一个按钮,上面写着“登录”,当你点击它时,它会弹出一个窗口要求你输入你的电子邮件地址。你填写完毕后,它会显示“连接到您的IDP”,然后“重定向到您的IDP”,接着我的登录后页面就出现在弹出窗口中。
显然,我不想让它出现在他们点击“登录”按钮的原始窗口中。
以下是我从登录页面复制来的JavaScript代码:
任何帮助或对一个好的简单实现的指导都将不胜感激。(使用外部库的PHP脚本并不能提供太多帮助!)
Facebook部分很顺利。我在Facebook的开发者网站上找到了一些简单的JavaScript代码,链接是http://developers.facebook.com/docs/reference/javascript/,我将它添加到我的登录页面中。然后我修改了C++登录cgi程序,使其能够识别来自Facebook的回调,并使用用户的电子邮件地址(已经存在于文件中)登录。
我卡在了Google那里。起初,我在Google网站上瞎搞,但我找不到任何简单的例子。我被引导到了libopkele C++库,但我找不到如何使用它的说明(我怀疑这不是我需要的)。然后我找到了一个叫做Google Friend Connect的东西,链接是http://code.google.com/apis/friendconnect/docs/code.html(不幸的是,它说它已经过时了)。它包含了一个漂亮的JavaScript示例,我将它放到了我的网站上。它提供了一个按钮,上面写着“登录”,当你点击它时,它会弹出一个窗口要求你输入你的电子邮件地址。你填写完毕后,它会显示“连接到您的IDP”,然后“重定向到您的IDP”,接着我的登录后页面就出现在弹出窗口中。
显然,我不想让它出现在他们点击“登录”按钮的原始窗口中。
以下是我从登录页面复制来的JavaScript代码:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/googleapis/0.0.4/googleapis.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/jsapi"></script>
<script type="text/javascript">
google.load("identitytoolkit", "1", {packages: ["ac"], language:"en"});
</script>
<script type="text/javascript">
$(function() {
window.google.identitytoolkit.setConfig({
developerKey: "<I put my developer key here>",
companyName: "<I put my company name here>",
callbackUrl: "http://www.mywebsite.com/cgi-bin/login.cgi",
realm: "",
userStatusUrl: "http://http://www.mywebsite.com/cgi-bin/loginstatus.cgi",
loginUrl: "http://http://www.mywebsite.com/cgi-bin/login.cgi",
signupUrl: "http://http://www.mywebsite.com/cgi-bin/login.cgi",
homeUrl: "http://www.mywebsite.com",
logoutUrl: "http://http://www.mywebsite.com/cgi-bin/logout.cgi",
idps: ["Gmail", "GoogleApps", "Yahoo"],
tryFederatedFirst: true,
useCachedUserStatus: false
});
$("#navbar").accountChooser();
});
</script>
<div id="navbar"></div>
我发现我的userStatusUrl从未被调用。回调URL已经被调用了,但我不确定该从中返回什么。似乎无论我返回什么都只会在页面上显示。我在某个地方看到了一个传递的参考文献,其中包含{"registered" : true}的json项,但那也没起作用(这是我从cgi脚本返回的确切文本):
Content-Type: application/json
Content-Length: 20
{"registered" : true}
任何帮助或对一个好的简单实现的指导都将不胜感激。(使用外部库的PHP脚本并不能提供太多帮助!)