2012-03-12 70 views
1

我试图从我的facebook页面获取所有的饲料白色的JavaScript API。 有没有人有一个工作的例子?用javascript api在我的网页上显示我的来自Facebook的提要?

我已经尝试过,但我不能得到它的权利,我可以从相册中获得照片,但我不能得到饲料,我不知道我做错了什么。

任何输入真的很感激。谢谢!

我有这样的代码:


编辑

OK,我有初始化代码中的代码如下图所示,它不工作,不执行代码和我没有得到任何错误:

<script> 
    window.fbAsyncInit = function() { 
     FB.init({ 
      appId  : '<%=facebookAppId%>', // App ID 
      channelUrl : 'www.mypage.se/channel.html', // Channel File 
      status  : true, // check login status 
      cookie  : true, // enable cookies to allow the server to access the session 
      xfbml  : true, // parse XFBML 
      oauth  : true 
     }); 

     // get the wall - feed 
var page_id = '<%=facebookPageId%>'; 
    FB.api('/' + page_id, {fields: 'access_token'}, function(resp2) { 
     if(resp2.access_token) { 
      alert(resp2.access_token); 


FB.api('/page id/feed?access_token='+resp2.access_token, function(response) { 

    var ul = document.getElementById('feed'); 
    for (var i=0, l=response.data.length; i<l; i++) { 

     var 
     feed = response.data[i], 
     li = document.createElement('li'), 
     a = document.createElement('a'); 
     a.innerHTML = feed.message; 
     a.href = feed.link; 
     li.appendChild(a); 
     ul.appendChild(li); 
         } 
      }); 
     } 
    }); 

};//end window.fbAsyncInit 

    // Load the SDK Asynchronously 
    (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)); 


</script> 
  1. 所以我为什么会有例如: FB.api( '/ Facebook的ID',函数(重警报('你的名字是'+ response.name); }); 里面的init代码而不是其他代码?

  2. 我仍然需要一些结构帮助在页面上写出回调,所以它看起来不错,因为它在Facebook上。 我喜欢写出“消息,图片,链接,名称”,也许还有别的吗?

  3. 正如我测试获取这个例子中的消息,并且一些回调在页面上显示为“undefined”?这是否意味着我收到消息时没有任何价值? 如果是这样我怎么能不写出emty值 - 未定义的?

谢谢!

UPDATE:

如果我用这个代码,然后它会读取的饲料,但只有林登陆到Facebook? 我开始感到困惑,因为我认为上面的代码应该可以工作: 我首先在第一次调用时要求访问令牌,当我得到访问令牌时,然后在第二次调用中使用它,我在做什么错误?

FB.api('/my userid or pageid/feed?access_token=the acces token that I get from the Graph API Explorer', {limit:5} , function(response){ 
     if (response && response.data && response.data.length){ 
      alert(response.message); 
      var ul = document.getElementById('feed'); 
      for (var j=0; j<response.data.length; j++){ 
      var feed = response.data[j], 
      li = document.createElement('li'), 
      a = document.createElement('a'); 
      a.innerHTML = feed.message; 
      a.href = feed.link; 
      li.appendChild(a); 
      ul.appendChild(li); 
      } 
     } 
     }); 
  1. 我得到几个不确定的答复,我怎么能不把它们写出来的页面上?
  2. 即使访问该网页的用户没有登录到Facebook,我如何才能获得上述代码的工作?
  3. 我拨打其他电话,可以毫无问题地获取相册中的照片并将其显示在网页上,我不明白为什么不同?
  4. 如果我想为客户进行设置(完成时),我需要采取哪些步骤?有点困惑... :-)
  5. 我想通过电话 得到消息,图片,喜欢等,并显示它就像它在饲料墙上,这里的任何建议吗?

好吧,我终于得到了它:-) 工作,我得到了正确的存取权限令牌,现在我可以显示饲料。 我在这里得到了正确的标记: https://graph.facebook.com/oauth/access_token?client_id=myapp_id&client_secret=myapp_secret&grant_type=client_credentials 现在我可以使用下面的代码获取用户订阅源和页面订阅源,只需更改page_id!

var page_id = '<%=facebookPageId%>'; 
var pageaccessToken='xxxxxxxxxxxxxxxxxxxxxxxxxx'; 
FB.api('/' + page_id + '/feed?access_token='+ pageaccessToken, {limit:5} , function(response){ 
     if (response && response.data && response.data.length){ 

      var ul = document.getElementById('pagefeed'); 
      for (var j=0; j<response.data.length; j++){ 
      var feed = response.data[j], 
      li = document.createElement('li'), 
      a = document.createElement('a'); 
      a.innerHTML = feed.message; 
      a.href = feed.link; 
      li.appendChild(a); 
      ul.appendChild(li); 
      } 
     } 
     }); 

好吧,现在它的工作,但我得到了未定义的响应? 这是什么原因造成的,是因为它是一个空值,我得到了回应? 我该怎么做才能使它不显示在页面上?

+0

你能分享一些代码吗? – Neelam 2012-03-12 12:33:54

+0

你有“read_stream”权限吗? – 2012-03-12 13:18:31

+0

是的,我拥有所有权限。 – 2012-03-12 16:29:38

回答

1

我不明白它是什么你想要做的,我有一种感觉,虽然你走错了路..

让我们开始的事实,你不需要任何特殊权限或页面访问令牌来查询页面订阅源,它是公开的,因此您需要的全部内容(quoted from the docs)是:“任何有效的access_token或用户access_token”。 这意味着,如果用户授权您的应用程序,则您为他获得了访问令牌,并且可以获得任何页面供稿。 例如,尝试在Graph API Explorer的南园购页。

另一个问题是询问用户“manage_pages”权限,然后询问图表API访问令牌您自己的应用程序将无法工作。当用户授权您的应用程序管理他的网页,这正是您所获得的,他的页面的权限,所以此请求例如:/southpark?feilds=access_token不会让您获得令牌,因为您不是此页面的管理员(甚至如果您向应用程序授予“manage_pages”权限)。

最后一件事是使用window.onload,这在你的情况下根本没有解决问题。 你不想在窗口加载时执行该代码,但当facebook sdk加载并初始化时。这就是为什么Facebook告诉你使用fbAsyncInit事件。 你在window.onload之前的代码是正确的形式,当你说“它没有工作”时,你的意思是什么?你有没有得到任何错误?它没有被执行?


编辑

据我了解,你要显示一个Facebook Page饲料在您的网站上的内容。

正如我已经告诉过你的,为了得到页面的提要,你需要的只是一个活动的访问令牌(“任何有效的access_token或用户access_token”)。

如果您按照Authentication文档,应用程序登录部分,您会看到您可以为您的Facebook应用程序发出访问令牌。有了这个令牌,你就可以在服务器端获得你想要的的任意网页

+0

嗨Nitzan,谢谢。 我希望能够在他们的网页上显示我的一位客户墙,并显示其他内容,如相册,朋友等。 如果我想显示任何东西比客户公共的东西我需要一个访问令牌。正如它所说:http://developers.facebook.com/docs/reference/api/“要获得有关用户的其他信息,您必须先获得他们的许可。在较高级别上,您需要获取访问令牌Facebook用户“。 var page_id ='my facebook page id';真的是客户的页面ID,而不是我的 - 错误类型。好吧,不会使用window.onload – 2012-03-14 09:16:49

+0

等等,你是指Facebook用户配置文件?你写了“从我的**脸书页**获取所有的饲料”,这意味着:[页面](http://developers.facebook.com/docs/reference/api/page/)而不是[用户](http: //developers.facebook.com/docs/reference/api/user/)。那么是哪一个呢? – 2012-03-14 09:21:01

+0

好吧,现在我已经将所有代码放在window.fbAsyncInit中,并且它不工作,不显示任何提要信息并且没有错误。 它没有执行它的接缝。 – 2012-03-14 09:50:52

相关问题