故事:
我在这里寻找一些社会融合专家来启发我这个难题。我的网络服务器正在使用 spring security 来验证用户登录、注册。我最近在我的网络服务器中实现了 spring social,一切都很顺利。以 fb 为例,当用户从 facebook 登录时,spring social 将构建 outh url 并将用户重定向到 facebook。一旦用户在 facebook 中通过身份验证,它会将他们重定向回我的网站。
谜题:
我需要实现具有相同“登录”功能的移动应用程序(html5 + phonegap)。我去了facebook集成页面。有几种方法可以对 html5 应用程序进行身份验证。我选择了服务器端实现: http: //developers.facebook.com/docs/authentication/server-side/通过客户端登录,因为我仍然需要弹簧辅助来检查我的网络服务器中是否存在电子邮件,否则重定向注册页面.
我遇到的第一个问题是在移动应用程序中重定向,我需要弹出窗口重定向到提供商登录页面而不是应用程序窗口。我设法通过 ajax 调用获取重定向 url 并在 childbrowser phonegap 插件中打开新窗口。现在的问题是,当用户通过提供者进行身份验证时,服务器没有简单的方法将“用户身份验证”通知给客户端,因为它位于单独的浏览器中。
示例代码
onFBlogin: function(){
Ext.Ajax.request({
url: APP.domain + "api/mobile/signin/facebook.json",
method: 'POST',
success: function(result, request) {
var json = JSON.parse(result.responseText);
window.plugins.childBrowser.onLocationChange = function (url) {
if(url==APP.domain+"api/mobile/success"){
window.plugins.childBrowser.close();
}
};
window.plugins.childBrowser.showWebPage(json.outhurl,{ showLocationBar: true });
},
failure: function(result, request) {
console.log("request facebook signin redirect url" + result);
},
});
}
通常,在spring security中,如果用户通过我的rest api进行身份验证,客户端可以通过成功回调发布请求并获取经过身份验证的令牌。我可以为每个 rest api 调用重用这些令牌。根据上面的代码。我无法知道身份验证是否完成以及何时应该将令牌从服务器发送到客户端。
如果您能给我一些想法,我将不胜感激。谢谢!