我正在为我客户的网站提供一系列活动。它们通过php / curl(而不是iFrame)包含它,因此它们可以完全自定义CSS。
然而,这意味着我无法使用Facebook API来查找客户端页面的访问者是否登录到FB:FB-API调用需要由应用程序签名,并且只能从应用程序所关联的域。 (那将是我服务器的域名,但请求来自我的客户页面。)
过去,如果没有登录,访问FB上的用户个人资料会发出404错误。
<script type="text/javascript" src="https://www.facebook.com/pianojoe" onload="enable_social_links()" onerror="not_logged_in_to_facebook()" async="async"></script>
这很方便,但FB小心翼翼: - /它。
我想仅在页面访问者登录到Facebook时显示我日历中事件的FB链接。
我的问题:如果我无法预先确定引荐页面的域名,那么如何查看页面访问者是否登录到Facebook,因此不使用Facebook API? < / p>
答案 0 :(得分:1)
Facebook PHP SDK有一个名为getLoginStatusUrl的(相对较新的)方法。
它创建了一个简单的URL,您可以将用户的浏览器重定向到该URL,然后将其带到Facebook,检查其登录状态,然后将其重定向回应用程序的三个不同URL之一,您可以指定。 / p>
ok_session
是您最感兴趣的一个:“如果用户登录Facebook则返回的网址。”
(当用户退出Facebook时,另外两个是no_user
,而当Facebook自己无法确定用户的状态时,no_session
是ok_session
,因为没有用户特定的FB cookie无论如何在他们的浏览器中设置。)
因此,您可以使用?logged_into_fb=true
等其他GET参数将{{1}}设置为应用程序的网址(如果未明确指定,则另外两个选项将仅重定向回应用程序的基本URL ) - 这样,当用户使用该参数重定向回您的应用程序时,您知道他们当前已登录到Facebook。
您是否真正使用FB PHP SDK并不重要 - 通过查看the source code of the method可以相对轻松地确定实际URL的构建方式,因此您可以轻松地对其进行调整并使用它SDK也是。