我正在尝试实施Facebook Connect单点登录网站.我最初只有一个Connect按钮(
),用户每次想要登录时都必须点击.我现在有自动登录和注销功能.也就是说,我的网站将检测登录的Facebook帐户,如果它可以找到我的网站的一个用户帐户匹配,则自动验证它们,如果Facebook会话丢失,则自动取消验证.我还有一个手动注销按钮,可以将用户从我的网站和Facebook中注销.所有这些都正常工作,但现在我的原始Connect按钮间歇性地无法正确呈现.它只是显示为普通的XHTML(即,它看起来像纯文本 - 不是按钮 - 并且是不可点击的),并且没有应用XFBML.这是基本代码:
在每个页面上:
{...} {...}
在注销页面上:(此页面对于已注销的用户不可见)
{...} Sign Out {...}
我已经看过的一些事情:
自动登录和注销工作正常.我可以在另一个选项卡上登录和退出Facebook,我的网站会注意到会话更改并相应地更新.
注销似乎工作正常:单击时,它会取消验证用户并将其从Facebook中注销,如预期的那样.
这个问题似乎通常发生在Facebook用户注销后,但它有点间歇性地发生; 它可能会在他们登录之前发生,并在几分钟/刷新后消失.
登录/注销过程后会遗留一些cookie,但删除它们并不能解决问题.
重新启动浏览器无法解决问题.
出现问题时,用户肯定会退出Facebook和我的网站.我检查了Facebook会话和站点身份验证.
正确提供所有外部脚本调用.
编辑:此外,当登录按钮没有渲染,它工作正常.
我怀疑在注销时我需要做的其他事情(比如清除会话或cookie),但根据我读过的关于Facebook Connect的所有内容,我需要做的就是调用注销功能(并取消对我的认证)服务器端).我真的很茫然; 有没有人有任何想法可能是错的?
确保在页面的非常结束处调用facebook js include(FeatureLoader),这样你的页面呈现然后facebook JS在将文本转换为按钮之后做了一些魔术.否则,这是在调用fb的服务器和在浏览器中加载你的网站内容之间的竞赛......
至少那是我遇到的问题.