因此,我创建了您的标准Facebook测试应用。它具有javascript SDK加载块以及其后的以下代码:
window.fbAsyncInit = function()
{
console.log('initiating FB');
FB.init({
appId: appID,
status: true, // check login status
cookie: true, // enable cookies to allow the server to access the session
xfbml: true // parse XFBML
});
FB.Event.subscribe(
'auth.authResponseChange',
function(response)
{
console.log('authResponseChange', response);
if (response.status === 'connected')
{
console.log('logged in');
}
else
{
console.log('not logged in');
}
}
);
};
问题:使用我的开发人员帐户,所有console.log()
记录均按预期方式记录。使用与该应用程序无关的其他帐户,它仅记录“启动FB”,此后则不记录任何信息status: true
。为什么会这样呢?
很好,因为状态没有变化。
auth.authResponseChanged
当auth响应已更改时,将触发该事件。该authResponse
是查询一个人的认证状态的状态,当这样返回的响应对象的一部分。它包含该人的访问令牌,令牌的到期时间以及该人的用户ID。
对于应用程序用户,由于已设置status: true
,因此在您运行该应用程序时,其状态将更改为“登录” ,因此将触发此事件,并且您logged in
可以进入该会话。
但是,当您为未登录/非应用程序用户运行应用程序时,该事件不会触发,因为状态不会更改。之前是“未登录”或“未授权”的,现在相同。
当您为未登录的用户/非应用程序用户调用facebook登录名时,状态将更改,并且您将看到日志为“已登录”或“未登录”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句