标签: facebook-javascript-sdk

FB.getLoginStatus返回会话,即使用户已经退出Facebook

这真让我抓狂。一个用户登录我的Facebook应用程序,做了一些事情。然后转到Facebook并注销。我有一个小计时器,每隔一段时间会调用FB.getLoginStatus()一次,以查看用户是否仍在登录。但是每当调用FB.getLoginStatus()时,它都会返回一个带有会话对象的响应。WTF?它不应该返回undefined / unknown吗?

我正在使用对Facebook evar的绝对最基本的调用:

FB.init({
    appId: 'MY APP ID',
    cookies: false,
    status: true,
    xfbml: false
});

FB.getLoginStatus(function (response) {
    if (response.session) {
        console.info("Session exists");
    } else {
        console.info("Session empty");
    }
});

setInterval(function () {
    FB.getLoginStatus(function (response) {
        if (response.session) {
            console.info("Session exists");
        } else {
            console.info("Session empty");
        }
    });
}, 10000);
Run Code Online (Sandbox Code Playgroud)

我检查并再次检查了允许请求所请求的权限。我只要求发送电子邮件和短信。所以...有什么建议吗?

facebook facebook-javascript-sdk

6
推荐指数
2
解决办法
1666
查看次数

Codeigniter,Facebook javascript SDK,PHP登录后的PHP重定向没有getUser()直到刷新

该过程如下.

1. User clicks Facebook Login button
2. User signs in and grants perms
3. Facebook redirects uses FB.Event.subscribe auth.login to redirect my login controller
4. My login controller loads the fbconnect module and chains the method Connect()
5. Connect() Checks if there is a facebook user using getUser() and if true checks if they are an existing user to log them in or returns false if no facebook user was found.
Run Code Online (Sandbox Code Playgroud)

一切正常,除了唯一的问题是在被重定向到登录页面之后Connect返回False,当它实际上应该是真的正义fbuser登录并且已经授予了perms.如果我刷新但一切正常,则用户登录(如果存在)或者如果将新内容发送到注册页面.以下是我的代码..

      <div id="fb-root"></div>
    <script>
      //initializing API
      window.fbAsyncInit = …
Run Code Online (Sandbox Code Playgroud)

php facebook codeigniter facebook-javascript-sdk facebook-php-sdk

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

Facebook登录中未定义FB

我有以下代码,但FB.login给出了一个FB未定义的javascript错误.

我错过了什么?

<html>
<body>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function()
{
FB.init
({
    appId   :   'XXXX',
    status :    true,
    cookie :    true,
    xfbml   :   true
});
};

(function()
{
var e = document.createElement('script');
e.src = document.location.protocol +  '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());



FB.login(function(response)
{
if(response.session)
{
    if(response.perms)
    {
        alert('yippee');
    }
    else
    {
        alert('oh no');
    }
}
else
{
    alert('login silly');
}
}, {perms:'email,user_birthday'});


</script>
hello
<fb:login-button></fb:login>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

facebook facebook-javascript-sdk facebook-login facebook-permissions

6
推荐指数
2
解决办法
4万
查看次数

仅限Firefox:在FB.init()之前调用的FB.login()

使用Facebook SDK时,在尝试将用户连接到我的站点时出现以下控制台错误."与Facebook连接"按钮在除Firefox之外的所有其他浏览器中都能正常工作.

我在innit配置中有一个频道网址,我已经确认在没有Firebug的Firefox安装中会出现此问题.以下是我的代码:

<script type="text/javascript">
  window.fbAsyncInit = function() {
  FB.init({
     appId :  'my_real_app_id',
     channelUrl : 'MYURL.com/channel.php',
     status:  true,
     cookie:  true,
     xfbml :  false
  });
};

(function(d) {
  var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
  if (d.getElementById(id)) { return; }
  js = d.createElement('script'); js.id = id; js.async = true;
  js.src = "//connect.facebook.net/en_US/all.js";
  ref.parentNode.insertBefore(js, ref);
}(document));

$(document).ready(function() {
  $('a#login-fb').click(function(event) {
     event.preventDefault();
     FB.login(function(response) {
        if (response.authResponse) {
           console.log('Welcome! Fetching your information...');
           FB.api('/me', function(response) {
              handleFacebookLogin(response);
           });
        } else {
           console.log('User cancelled login …
Run Code Online (Sandbox Code Playgroud)

firefox facebook facebook-graph-api facebook-javascript-sdk

6
推荐指数
1
解决办法
5457
查看次数

使用AJAX连接Facebook HTML5和评论元素

Facebook指示我们将以下代码放在我们的页面上:

<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
Run Code Online (Sandbox Code Playgroud)

而不是我把它包装在一个函数中:

function ReloadSocialSharing() {
    //facebook
    (function (d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=myappid";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
}
Run Code Online (Sandbox Code Playgroud)

并在里面调用它: $(function () { }

现在我喜欢的按钮和我的评论通过Facebook面板都显示并正常工作.然后我进行AJAX调用并将新的html元素添加到我的页面中.这些已经有适当的Facebook标记,类似于我原来的字段.我这样做我的ajax调用:

$('#search').ajaxSubmit(GetSearchAjaxFormOptions(!isDefault, element));

function GetSearchAjaxFormOptions(displayResetPreferencesButton, giveMeFocus) {
    return {
        target: '#search-results',
        data: GetSearchData(), …
Run Code Online (Sandbox Code Playgroud)

ajax jquery html5 facebook-like facebook-javascript-sdk

6
推荐指数
1
解决办法
910
查看次数

从没有服务器的桌面客户端到OAuth的正确方法

我正在开发一个必须与Facebook连接以下载一些用户数据的扩展.我对OAuth舞蹈的细节有点新鲜,并且无法以期望的安全级别实现这一点.在当前的设置(有效)我​​担心恶人劫持我的应用程序的名称并使用它来发布垃圾邮件.

我尝试了许多不同的技术来在我的扩展中实现OAuth(特别是在Facebook上登录).当前设置使用Facebook的手动登录流程.

  1. 在沙盒选项卡中打开OAuth弹出窗口.
  2. 将redirect_url设置为不需要配置重定向URL的特殊内部Facebook页面,将auth_token参数设置为返回auth_token,而不是临时代码.
  3. 将javascript注入特殊重定向页面,该页面使用auth_token将消息发布到扩展名.

这按预期工作.我可以通过弹出窗口提供我的应用程序权限后检索用户auth_tokens.

我担心安全性,因为扩展没有服务器来存储密钥,也没有有效的域来限制redirect_urls并验证授权请求的真实性.由于这个流程:黑客可以简单地将源下载到我的扩展,窃取Facebook App ID,从他们自己的网站为我的应用程序生成弹出窗口,并获得auth_tokens,可以代表"通过"我的应用程序发布.

令人担忧的是,官方Google Chrome对扩展中的OAuth的古老建议将您的consumer_secret嵌入到扩展程序中.这似乎违反直觉.

我有理由相信这可以通过两种方式解决:

  1. 创建我自己的服务器,充当我的扩展和Facebook之间的代理.我可以将redirect_url设置为我的自定义域,将consumer_secret存储在我的服务器上,并在客户端和我自己的服务器之间定义一个狭窄的API.
  2. 将授权重定向限制为我的Chrome扩展ID(有点像Facebook iOS SDK如何使用App Store捆绑标识符).很遗憾,我无法将我的Facebook应用与Chrome扩展程序ID相关联.它说"URL无效".

我更喜欢第二种选择,因为运行服务器可能代价高昂,并为扩展引入了另一个故障点.用户还必须处理持有auth_tokens的"黑匣子"代码,这很糟糕.

有趣的是,看起来Facebook对ms-app:// URL(Windows 8应用程序)提出了特殊例外.为什么不chrome-extension:// urls?

所以我的问题: - 这可能吗?我错过了什么吗?第二:我是否对这种类型的劫持攻击感到偏执?它似乎相当温和,但我宁愿不允许黑客劫持我的应用程序的oauth对话框.

谢谢

google-chrome-extension facebook-graph-api oauth-2.0 facebook-javascript-sdk facebook-oauth

6
推荐指数
1
解决办法
318
查看次数

Facebook时间线中嵌入的视频显示"下载链接",只有在通过facebook打开图形api共享时才会内联播放

这是我正在使用的og meta标签:

    <meta property="fb:app_id" content="xxxxxxxxxxxxxxxxx" />
    <meta property="og:video" content="http://videogami.s3.amazonaws.com/54c2c58c19d5bdec65000036.mp4"> 
    <meta property="og:video:secure_url" content="https://videogami.s3.amazonaws.com/54c2c58c19d5bdec65000036.mp4"> 
    <meta property="og:video:type" content="video/mp4"> 
    <meta property="og:video:width" content="600"> 
    <meta property="og:video:height" content="380">
    <meta property="og:title" content="" />
    <meta property="og:image" content="http://videogami.s3.amazonaws.com/54c2c58c19d5bdec65000036.big.jpg" />
    <meta property="og:url" content="http://videogami.tv/h/54c2c58c19d5bdec65000036" />
    <meta property="og:type" content="video.other" />
Run Code Online (Sandbox Code Playgroud)

如果我手动共享链接,嵌入工作完美.但是当我通过Facebook/me/feed api分享链接时,它将无法播放,只显示指向"下载文件"的mp4链接.

以下是一个示例链接:http://videogami.tv/h/54c2bb1719d5bdec65000030

知道为什么会这样吗?我很确定你不再需要一个flash播放器了,它在我能找到的FB文档中没有说到这一点.

当你手动发布它时,通过api发布链接是没有意义的.

在玩之前 点击播放后

facebook facebook-graph-api facebook-javascript-sdk

6
推荐指数
0
解决办法
698
查看次数

如何在不登录的情况下获取Facebook页数?

我需要在没有用户登录的情况下获取facebook页面.我想在我的网页上显示计数.我不想要一个FB Button,只需要显示计数.我看到有几个人正在使用graph api,但我认为它需要一个accessstoken,所以它也需要用户登录.我不想要那种东西.伙计们帮我解决问题.我也会尝试,如果我之前得到解决方案,将在这里发表评论.

javascript facebook facebook-like facebook-graph-api facebook-javascript-sdk

6
推荐指数
2
解决办法
2474
查看次数

Angularjs有问题在社交网络中分享

首先,我想澄清我正在使用prerender.io,一切都很好.如果我在Facebook中粘贴URL,则会正确共享该站点.

问题出在我在网站上的社交网络的Like/Tweet按钮上.

1)我的第一个问题是Facebook按钮和评论部分出现"有时"我的意思是......在某些情况下,它们会出现,但如果我刷新页面或者我尝试不同的时间来加载页面,按钮不在那里.我找不到任何关系来找到根本原因... 2)第二个是当分享按钮(Facebook)和推特(Twitter)没有加载完整的URL.URL由服务器+到页面的路径+视频的id(是观看视频的网页)组成.但是当我在某些情况下点击按钮时,视频ID不在URL中,这非常奇怪.

我正在谈论的网站的链接是:https://www.granojo.com/video/10334

代码是:

<div class="text-center">
    <div class="fb-like"  style="top: -5px;" data-send="true" data-href="{{ENVIRONMENT.WEB}}/video/{{values.object.id}}" data-send="false" data-layout="button_count" data-width="450" data-show-faces="true"></div>
    <a data-url="{{ENVIRONMENT.WEB}}/video/{{values.object.id}}" data-text="{{values.object.name}}" href="https://twitter.com/share" class="twitter-share-button" data-lang="es" data-hashtags="{{values.object.name | nospace}}">Twittear</a>
    <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
    <!-- Place this tag where you want the +1 button to render. -->
    <div class="g-plusone" data-size="medium" data-href="{{ENVIRONMENT.WEB}}/video/{{values.object.id}}"></div>

    <!-- Place this tag after the last +1 button tag. -->
    <script type="text/javascript">
        window.___gcfg = {lang: 'es'};

        (function() {
            var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; …
Run Code Online (Sandbox Code Playgroud)

twitter facebook facebook-javascript-sdk angularjs

6
推荐指数
1
解决办法
543
查看次数

要求通过Marketing API在Facebook中推广iOS应用

我有批准的Facebook申请ads_read, manage_pages ads_management, business_management and Ads Management Standard Access permissions
我可以创建Ad campaignad set并且可以asset通过Facebook Marketing API 上传到Facebook。

我使用以下参数创建广告集:

{
      name: 'adset_name',
      campaign_id: '<campaign_id>',
      lifetime_spend_cap: 11000,
      promoted_object: {
        application_id: '<fb_app_id>',
        object_store_url: 'https://itunes.apple.com/app/<my_app>',
        page_id: '<page_id>',
      },
      billing_event: 'IMPRESSIONS',
      optimization_goal: 'APP_INSTALLS',
      bid_amount: 20000,
      targeting: {
        age_min: 20,
        age_max: 25,
        genders: [1],
        locales: [6],
         user_os: ['iOS_ver_11.0_and_above'],
        geo_locations: {
          countries: ["US"],
        },
        excluded_geo_locations: {
          countries: ["GB"],
        },
        publisher_platforms: 'facebook',
        facebook_positions: ['feed'],
      },
      device_platforms: 'mobile',
      pacing_type: 'standard',
      status: 'PAUSED', …
Run Code Online (Sandbox Code Playgroud)

javascript facebook facebook-graph-api facebook-javascript-sdk facebook-marketing-api

6
推荐指数
1
解决办法
233
查看次数