TL; DR Facebook javascript SDK无法确定直接从facebook.com下面注销的用户的准确登录状态.
我正在使用javascript SDK开发一个Facebook应用程序进行身份验证.我注意到,当用户直接退出Facebook(在facebook.com上)时,SDK无法理解用户在应用页面上的登录状态.我把它归结为以下简单的测试用例.
在一个选项卡中登录facebook.com.在另一个选项卡中,渲染下面的应用页面(根据需要替换MY_APP_ID).如果您以从未授予此应用程序权限的用户身份登录Facebook,请单击"登录"并授予他们.无论哪种方式,您都应该看到一些事件触发,表明您已登录.
现在,回到facebook.com标签上,退出facebook.转到应用程序选项卡,然后单击所有按钮("登录"除外)并查看浏览器控制台输出.
什么时候FB.logout被召唤,什么都没发生 永远不会调用回调.在Chrome中,出现以下错误:"不安全的JavaScript尝试使用URL http://www.facebook.com/从框架http://my_app.com访问框架.域,协议和端口必须匹配."
当FB.getLoginStatus被调用时,响应说"连接"和具有authResponse对象.但这没有用,因为它现在不正确.相反,如果为"force"参数传入true,则不会发生任何事情(永远不会调用回调).
当FB.getAuthResponse被调用时,没有任何反应(回调永远不会调用).
在任何此类事件中(在退出facebook之后)都没有触发任何相关事件.
那么问题是在这种情况下似乎没有可能从SDK合法地确定用户的登录状态.或者我做了一些愚蠢的事情,尽管我把它煮到了最低限度.
我的最终目标是,如果用户在退出facebook后点击我的注销按钮,我希望能够在这种情况下做一些事情.但SDK没有提供实现这一目标的可行方法.
任何想法或想法?有没有其他人经历过这个并找到了解决方法?谢谢!
简单的应用页面:
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml' xmlns:fb='http://www.facebook.com/2008/fbml'>
<head>
</head>
<body>
<script>
window.fbAsyncInit = function() {
function subFBEvent(name) {
FB.Event.subscribe(name, function(r) {
console.log(name);
console.log(r);
});
}
subFBEvent('auth.login');
subFBEvent('auth.logout');
subFBEvent('auth.authResponseChange');
subFBEvent('auth.statusChange');
FB.init({
appId : 'MY_APP_ID',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access …Run Code Online (Sandbox Code Playgroud) 我正在使用facebook 3.0.1钛模块.在Android中,Facebook apprequests对话框始终返回为已取消,即使实际的apprequest已发送,也可以在Facebook上看到.因此,我无法将请求存储在我的后端,这使得apprequest无用.
但在iOS中它工作正常.
这是我的代码
var fb = require('facebook');
fb.appid = 'my_app_id';
fb.permissions = ['publish_stream', 'read_stream', 'email']; // Permissions your app needs
fb.forceDialogAuth = true;
fb.addEventListener('login', function(evt) {
if (evt.success) {
fb.dialog("apprequests", {
message:"LeaugeNation",
// max_recipients : "2"
}, function(response) {
alert(JSON.stringify(response));
if(response.result) {
alert("send friend req");
// sendFacebookInvite(e.result);
}
});
} else if (evt.error) {
alert("error");
} else if (evt.cancelled) {
alert("cancelled");
} else {
alert("default");
}
});
fb.authorize();
Run Code Online (Sandbox Code Playgroud)
如果我运行代码我得到以下结果
{"cancelled":true,"code":-1,"success":false}
我做了以下更改,但没有得到结果.
提前致谢.
你能告诉我我想要在Android上获得正确结果的变化吗?
android titanium facebook-javascript-sdk titanium-modules titanium-mobile
我正在使用Facebook的JavaScript SDK并尝试确定用户是否登录,我有以下代码:
window.fbAsyncInit = function() {
FB.init({
appId:'139894666087975', cookie:true, status:true, xfbml:true
});
$('.login_fb').click(function(){
FB.login(function(response) {
if(response.session)
{
if (response.perms) {
window.location.reload();
}
}
},{perms:'email,user_birthday,user_hometown,user_location,publish_stream'});
});
FB.getLoginStatus(function(response) {
alert(response.authResponse);
if (response.authResponse) {
alert(response.authResponse);
} else {
$.blockUI({
message: $('#fblogin'),
css: {
top: '9%',
left: ($(window).width() - 700) /2 + 'px',
width: '700px',
cursor: 'hand',
border: '10px solid #ccc',
}
});
}
});
};
Run Code Online (Sandbox Code Playgroud)
getLoginStatus的response.AuthResponse是'undefined',但我实际上是使用为此应用设置的权限登录的.
知道为什么它会继续显示为未定义吗?当我再次尝试登录时,它只关闭了Facebook框(因为我已经登录)并刷新页面,再次显示"未定义".
谢谢你的帮助!
我正在使用FB.Canvas.setAutoGrow(7);我的页面(页面=高分表,因此需要增长).
然而,当我回到其他页面时,画布保持增长,但它应该适应新内容,当然......基本上,它需要再次收缩.
我尝试过setSize,但是没有用.
谁可以帮助我?我一直在找几个小时......非常感谢!!!
我们xd_arbiter.php最近从facebook的文件开始收到错误,我无法回想起我们所做的任何更改,所以我开始认为问题出在Facebook.
这个错误发生在firefox 14.0.1,(chrome,safari,opera(最新版本))似乎工作正常.
该项目是一个Facebook连接网站,我们正在使用js api.我们基本上使用的是facebook提供的相同代码.
http://developers.facebook.com/docs/guides/web/#login
如果用户在进入我们的网站之前登录到Facebook,则只会发生错误.在all.js文件的异步加载之后,我们收到此错误.
JSON.parse: bad control character in string literal
Run Code Online (Sandbox Code Playgroud)
在xd_arbiter.php?version=10.这是在调用FB.init方法之前.
我看到这篇文章,但这没有多大帮助,是吗?
如何避免链接到http://static.ak.facebook.com/connect/xd_arbiter.php无限期挂
任何人都可以确认他们也得到了这个问题,并确认问题是在Facebook.
谢谢你的帮助.
App Domains: localhost
Website with Facebook login: http://localhost/auth
Run Code Online (Sandbox Code Playgroud)
我转到http://localhost/auth/我的Chrome开发者控制台,我看到错误:Given URL is not allowed by the Application configuration.: One or more of the given URLs is not allowed by the App's settings. It must match the Website URL or Canvas URL, or the domain must be a subdomain of one of the App's domains.
我做一个view-source看到以下内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<div id="fb-root"></div>
<script>
// …Run Code Online (Sandbox Code Playgroud) 完全失去了这个和文档并没有真正对此有任何见解......
使用此登录按钮代码在我的应用程序中使用Facebook Javascript SDK:
<fb:login-button scope="manage_pages,read_insights,ads_management" autologoutlink="true" size="large"></fb:login-button>
Run Code Online (Sandbox Code Playgroud)
根据文档,autologoutlink=trueparam会在用户登录后将login按钮设置为log out.我想保留此功能而不是编写自己的按钮代码
此事件调用FB.logout但仍返回回调中的错误消息
FB.Event.subscribe('auth.logout', function(response) {
FB.logout(function(response) {
// FB.logout() called without an access token.
});
});
Run Code Online (Sandbox Code Playgroud)
我想使用Facebook登录窗口小部件而不是我自己的登录按钮,所以对同一主题的其他答案没有帮助.我不明白我应该如何通过access_token来证明我有权注销...
我想在Facebook Like按钮和Facebook Share按钮之间分配测试点击.我知道我可以附加FB.Event.subscribe('edge.create',...)的事件处理程序来跟踪Facebook上的点击按钮,但Facebook分享按钮是否有相应的事件?FB.Event.subscribe文档中似乎没有.
facebook facebook-sharer facebook-like facebook-javascript-sdk
所以我尝试在我的 nodejs 后端服务器中实现 Facebook 登录功能。出于测试目的,我正在尝试客户端检查登录并获取访问令牌。为此,我遵循了文档,它说要使用 Javascript SDK,我遵循了该程序,但是存在问题。
window.fbAsyncInit = function() {
FB.init({
appId : '##############',
autoLogAppEvents : true,
xfbml : true,
version : 'v4.0'
})
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
}
Run Code Online (Sandbox Code Playgroud)
这是我想获取用户登录状态的代码,但我收到一条错误消息:
The method FB.getLoginStatus can no longer be called from http pages
Run Code Online (Sandbox Code Playgroud)
我非常了解生产规则,但这是我正在研究的开发模式,但仍然出现错误。我缺少什么吗?有什么我必须做的吗?我在本地主机上运行它并收到错误。
我想为我的应用程序的用户提供搜索输入,他们可以在其中查找稍后将用于使用官方事件 API 将在线活动发布到 Facebook 的地点 - 要求在线活动提供地点 ID。我正在使用 JS SDK。
2020 年 8 月 3 日,Facebook 已在其 API 中删除了适用于 Web的Places Search APIv8.0(至于今天,它仍然可以在之前的版本中使用,v8.0但我不确定它可以使用多长时间,我还想升级我的 API 版本)正在应用程序中使用)。我试图找到已弃用端点的任何替代方案,但找不到任何替代方案。
有谁知道是否还有其他选项可以获取给定搜索查询的地点 ID?