如何检测用户登录我的应用程序后从Facebook注销
How to detect user logging out of Facebook after logging into my app?
我的应用程序使用Facebook身份验证:
FB.init({
appId: config.fbAppId,
status: true,
cookie: true,
// xfbml: true,
// channelURL : 'http://WWW.MYDOMAIN.COM/channel.html', // TODO
oauth : true
});
// later...
FB.login(function(response)
{
console.log(response);
console.log("authId: " + response.authResponse.userID);
gameSwf.setLoginFacebook(response.authResponse.accessToken);
}, {scope:'email,publish_actions,read_friendlists'});
当使用它时,人们可以在墙上张贴:
var obj = {
method: 'feed',
link: linkUrl,
picture: pictureUrl,
name: title,
caption: "",
description: message
};
function callback(response) {
// console.log("Post on wall: " + response);
}
FB.ui(obj, callback);
这很好用,但有一个小问题。如果人员:
- 登录应用程序
- 注销Facebook
- 尝试从应用程序制作墙帖
墙柱对话框打开失败。控制台显示"拒绝显示文档,因为X-Frame-Options禁止显示。"。
我可以让Facebook向用户显示登录提示吗。或者我可以检测到错误并告诉用户他不再登录Facebook吗?
只需回忆getLoginStatus,但强制往返Facebook。查看以下代码:
FB.getLoginStatus(function(response) {
// some code
}, true);
查看设置为true的最后一个参数以强制往返。
来自JS SDK文档:
为了提高应用程序的性能,不是每次调用检查用户的状态将导致向Facebook的服务器。在可能的情况下,会缓存响应。第一次在FB.getLoginStatus被调用的当前浏览器会话,或JSSDK初始化状态为true,响应对象将由SDK。后续对FB.getLoginStatus的调用将从此缓存的响应。
这可能会导致用户登录(或注销)时出现问题自上次完整会话查找以来的Facebook,或者如果用户在他们的帐户设置中删除了你的应用程序。
为了解决这个问题,您调用FB.getLoginStatus参数设置为true以强制往返Facebook-有效刷新响应对象的缓存。(http://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/)
您可以尝试使用FB.getLoginStatus,如果用户已连接,这将允许他们完成墙柱。如果他们没有连接,那么在他们可以在墙上发帖之前,请调用FB.login方法。
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
// the user is logged in and has authenticated your
// app, and response.authResponse supplies
// the user's ID, a valid access token, a signed
// request, and the time the access token
// and signed request each expire
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
} else if (response.status === 'not_authorized') {
// the user is logged in to Facebook,
// but has not authenticated your app
} else {
// the user isn't logged in to Facebook.
}
});
http://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/
还有一些登录和注销事件,您可以监视这些响应并对其进行处理。
FB.Event.subscribe('auth.login', function(response) {
// do something with response
});
FB.Event.subscribe('auth.logout', function(response) {
// do something with response
});
http://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/
- 我在哪里从 React Redux 应用程序中的服务器获取初始数据
- 有没有一种方法可以在IE8中解决我的Rails javascript应用程序.js的问题
- 获取包含我的谷歌应用程序脚本的页面的url
- 胡子.js卡在我的 Rails 应用程序中的 0.4.0-dev 上
- 如何消除我的应用程序上的希腊字符
- 我的应用程序中的可点击元素应始终是锚标记
- 如何创建重用我的 JS 库的 iPad 应用程序,这些库是为 Web 应用程序构建的
- ASP.NET:是否可以将CSS或Javascript注入到我的Web应用程序中的每个页面中
- 为什么IE无法正确显示我的HttpHandler Web应用程序中的特殊符号
- 为什么我的应用程序中的某些组件在IE7中工作,而在IE9中不起作用
- 为什么我的Mac应用程序中的WebView html拒绝加载JQuery或任何外部脚本
- Angularjs模式窗口在我的应用程序中的实现
- 我曾经跟随某人的代码样本,并尝试应用到我的HighChart程序,但我可以'I don’我一点也做不到
- 如何从我的web应用程序中的Java脚本文件中获得加密的密码
- 如何始终解析相对于我的web应用程序根的URL
- 我可以使用标准Javascript应用程序中的Google Polymer吗
- Facebook应用程序-我如何计算发件人邀请的朋友数量
- 访问导致我的应用程序崩溃的数组元素
- 我的网络应用程序中的谷歌地图API
- Javascript应用程序-我的代码怎么样