spring社交客户端ajax登录提供商

时间:2012-10-10 17:54:49

标签: facebook cordova spring-security spring-social childbrowser

故事:

我正在寻找一些社交整合专家来启发我这个难题。 我的Web服务器使用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进行身份验证,则客户端可以通过成功回调来发布请求并获取经过身份验证的令牌。我可以为每次休息api调用重用这些令牌。根据上面的代码。我无法知道身份验证是否已完成以及何时应将令牌从服务器发送到客户端。

如果你能给我一些想法,我会很感激。谢谢!

1 个答案:

答案 0 :(得分:-1)

我面临同样的问题。我即将尝试实现这一点:

在Facebook中配置您的应用,以便返回地址类似于http://什么是点com / receiveFacebookResponse 它基本上响应了刚刚打开的弹出窗口上执行的javascript代码。这个js代码将关闭弹出窗口并在父窗口(与您的应用程序一起)上执行一个函数。此功能必须存在于您的应用中。你把它(及其所有参数)放在会话(或cookie)中。这个函数应该做一个ajax调用来更改应用程序的标题,基本上是将“login here”消息更改为“Hello logged-user”(以及您可能需要的许多其他内容),并且很可能完成已启动但登录过程中断的操作。

我会试试,我会告诉你的。如果你以其他方式做到这一点,我会很高兴听到。

相关问题