我有一个网站,允许通过 facebook 功能登录并显示来自 facebook 的照片。
从移动浏览器访问时,如果用户已经通过本机 FB 应用程序(iOS 或 Android)登录,我希望网站自动登录(单击 FB 登录按钮时,无需输入用户名和密码)。似乎我可以通过构建本机 iOS 或 android 应用程序并使用 facebook 单点登录功能来做到这一点。是否可以在不让用户在他们的移动设备上安装任何东西的情况下做到这一点?
我有一个网站,允许通过 facebook 功能登录并显示来自 facebook 的照片。
从移动浏览器访问时,如果用户已经通过本机 FB 应用程序(iOS 或 Android)登录,我希望网站自动登录(单击 FB 登录按钮时,无需输入用户名和密码)。似乎我可以通过构建本机 iOS 或 android 应用程序并使用 facebook 单点登录功能来做到这一点。是否可以在不让用户在他们的移动设备上安装任何东西的情况下做到这一点?
这是不可能的。
自动登录依赖于在用户批准应用程序后将授予网站或移动应用程序的身份验证令牌。出于安全原因,这些代币与发行它们的原因密切相关。特别是,网络令牌和移动令牌不可互换。
因此,您可以构建一个本地移动应用程序来获取“本地令牌”,但即使您设法(cookie-)将其注入浏览器视图,您网站的后端也无法使用它。
更一般地说,您提出了一个连 facebook 都无法解决的问题:假设您正在使用 facebook 移动应用程序并在那里登录。如果您在同一部手机上打开 facebook 的网络版本,则必须再次登录。根本原因与上述相同。具体来说,任何本机应用程序都无法将任意身份验证 cookie 设置到操作系统浏览器中。我个人认为这个限制不会失效,因为它会产生很大的安全影响——想象一下任何应用程序如何为任何网站设置(并可能获取)cookie。
如果他们从未从他们的手机登录过 facebook,那么您的网站将如何认识他们?
是否可以在不让用户在他们的移动设备上安装任何东西的情况下做到这一点?
与 PC 一样,移动设备中的用户需要先在手机中登录 facebook 的网站,然后才有资格“自动”登录到您的网站。当我说自动时,我的意思是他们仍然必须进行“您是否授权此应用程序/网站在您的帐户上做 X 件事”的第一次流程。在网络上使用 facebook 的 api 时,该消息是不可避免的。
希望这能回答你的问题。
是否可以在不让用户在他们的移动设备上安装任何东西的情况下做到这一点?
不,这是不可能的。您需要有一个本机或混合应用程序(phonegapped 等)才能使其工作。移动 Web 应用程序在浏览器沙箱中运行,没有本机代码界面 - 您无法在移动设备上访问 FB 的本机 SSO
你看过这个脸书页面吗?正如basav所说,我不确定你问的是否可能,但也许你会在那里找到一些线索。