1

我们正在将应用程序集成为工作中的 facebook 应用程序。我希望能够检测用户是否已登录 facebook,如果没有,则提示进行身份验证。

到目前为止,我们已经成功使用了 facebook SDK 和它提供的登录功能。但是,这会导致我们的应用程序创建一个身份验证弹出窗口,并且它被大多数浏览器阻止,因此我们的首要任务是重新实现身份验证逻辑以不使用弹出窗口。

根据 facebook 文档中的教程,可以通过对用户状态更改请求使用事件订阅(在用户注销时不起作用)或通过获取访问令牌来完成。问题是令牌作为请求参数返回到顶部窗口(我在用户验证后指定为返回 url 的 url)。由于存在一些跨域和浏览器限制,我无法使用客户端脚本来获取值,并且我被卡住了。

此处已提出相关问题,常见问题是大多数应用程序正在运行localhost。但是,我们的应用程序的情况是,我们已将应用程序部署到本地网络服务器,该服务器由公共域公开,但仍然存在跨域限制问题。它在 facebook 应用程序配置中被其公共域名引用。我完全相信这些域可以从外部完全访问。

一般来说,我们的情况是,我们希望在 Facebook 用户使用该应用程序时托管该应用程序。也许这种方法可能与我们的要求不兼容?是否可以配置跨域通信以避免该问题?还有其他方法可以避免 facebook 登录弹出窗口吗?

4

1 回答 1

3

首先,现代浏览器中弹出窗口阻止程序的默认设置是,它们只阻止在没有用户交互的情况下调用的弹出窗口。如果您在页面加载时自动调用 FB.login,它可能会被阻止。但是,如果您向用户提供一个链接/按钮说“在此处登录”并且仅在单击该链接/按钮时调用 FB.login,那么弹出窗口很可能会显示而不是阻止。

如果您不愿意这样做——那么您的另一个选择是使用服务器端身份验证流程。您可以将用户重定向到身份验证对话框,这将发生在同一窗口中,之后他将被引导回您的应用程序。

于 2012-07-25T12:06:40.103 回答