标签: facebook-javascript-sdk

FB JS-SDK无法直接检测用户从FB注销

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)

javascript facebook facebook-javascript-sdk

10
推荐指数
1
解决办法
1469
查看次数

Facebook apprequests对话框总是返回取消的Titanium Android?

我正在使用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}

我做了以下更改,但没有得到结果.

  • 更改appid不会改变结果
  • 改变了Facebook App的Key Hash

提前致谢.

你能告诉我我想要在Android上获得正确结果的变化吗?

android titanium facebook-javascript-sdk titanium-modules titanium-mobile

10
推荐指数
1
解决办法
466
查看次数

Facebook JS Sdk - FB.getLoginStatus = undefined

我正在使用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框(因为我已经登录)并刷新页面,再次显示"未定义".

谢谢你的帮助!

facebook facebook-graph-api facebook-javascript-sdk

9
推荐指数
1
解决办法
7509
查看次数

setAutoGrow:其他页面应该再次"收缩"

我正在使用FB.Canvas.setAutoGrow(7);我的页面(页面=高分表,因此需要增长).

然而,当我回到其他页面时,画布保持增长,但它应该适应新内容,当然......基本上,它需要再次收缩.

我尝试过setSize,但是没有用.

谁可以帮助我?我一直在找几个小时......非常感谢!!!

facebook autogrow facebook-javascript-sdk

9
推荐指数
1
解决办法
2115
查看次数

JDS3中的Facebook xd_arbiter.php错误

我们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.

谢谢你的帮助.

javascript facebook facebook-javascript-sdk

9
推荐指数
1
解决办法
3395
查看次数

我在localhost 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 oauth-2.0 facebook-javascript-sdk facebook-oauth

9
推荐指数
1
解决办法
1万
查看次数

FB.logout()在没有访问令牌的情况下调用.javascript sdk

完全失去了这个和文档并没有真正对此有任何见解......

使用此登录按钮代码在我的应用程序中使用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 facebook-javascript-sdk facebook-login

9
推荐指数
1
解决办法
3万
查看次数

FB.Event.subscribe有Facebook Share按钮事件吗?

我想在Facebook Like按钮和Facebook Share按钮之间分配测试点击.我知道我可以附加FB.Event.subscribe('edge.create',...)的事件处理程序来跟踪Facebook上的点击按钮,但Facebook分享按钮是否有相应的事件?FB.Event.subscribe文档中似乎没有.

facebook facebook-sharer facebook-like facebook-javascript-sdk

9
推荐指数
1
解决办法
1万
查看次数

方法 FB.getLoginStatus 不能再从 http 页面调用

所以我尝试在我的 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)

我非常了解生产规则,但这是我正在研究的开发模式,但仍然出现错误。我缺少什么吗?有什么我必须做的吗?我在本地主机上运行它并收到错误。

node.js express facebook-javascript-sdk

9
推荐指数
2
解决办法
1万
查看次数

已弃用的 Facebook Places Search API for Web 的替代方案

我想为我的应用程序的用户提供搜索输入,他们可以在其中查找稍后将用于使用官方事件 API 将在线活动发布到 Facebook 的地点 - 要求在线活动提供地点 ID。我正在使用 JS SDK。

2020 年 8 月 3 日,Facebook 已在其 API 中删除了适用于 WebPlaces Search APIv8.0(至于今天,它仍然可以在之前的版本中使用,v8.0但我不确定它可以使用多长时间,我还想升级我的 API 版本)正在应用程序中使用)。我试图找到已弃用端点的任何替代方案,但找不到任何替代方案。

有谁知道是否还有其他选项可以获取给定搜索查询的地点 ID?

facebook-graph-api facebook-javascript-sdk

9
推荐指数
1
解决办法
1020
查看次数