2

故事:

我在这里寻找一些社会融合专家来启发我这个难题。我的网络服务器正在使用 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 调用重用这些令牌。根据上面的代码。我无法知道身份验证是否完成以及何时应该将令牌从服务器发送到客户端。

如果您能给我一些想法,我将不胜感激。谢谢!

4

1 回答 1

-1

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

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

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

于 2013-01-28T18:48:03.033 回答