Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从facebook-sdk 4.0检索提要_Javascript_Php_Facebook - Fatal编程技术网

Javascript 从facebook-sdk 4.0检索提要

Javascript 从facebook-sdk 4.0检索提要,javascript,php,facebook,Javascript,Php,Facebook,我一直在尝试使用php和javascript检索某人的facebook提要,但到目前为止没有任何效果。根据我的尝试,需要一个会话来检索访问令牌,从而能够查看其他人的公开提要-developers.facebook.com/docs/facebook-login/access-tokens/usertokens 如果我们尝试以下url:graph.facebook.com/PAGE-ID/feed,它将返回一个错误,指出请求此资源需要访问令牌 以下是我基于facebook sdk文档的javasc

我一直在尝试使用php和javascript检索某人的facebook提要,但到目前为止没有任何效果。根据我的尝试,需要一个会话来检索访问令牌,从而能够查看其他人的公开提要-developers.facebook.com/docs/facebook-login/access-tokens/usertokens

如果我们尝试以下url:graph.facebook.com/PAGE-ID/feed,它将返回一个错误,指出请求此资源需要访问令牌

以下是我基于facebook sdk文档的javascript尝试:

问题是,/PAGE-ID/feed返回的是一个空数组。我曾尝试请求类似/me的内容,它会在控制台中打印基本信息,如姓名、id、用户名等

控制台输出:

Objectdata:数组[0] __原型:对象

我相信我缺少了一些简单的东西,比如权限,所以我尝试在登录阶段使用scope。然而,根据Graph API文档developers.facebook.com/docs/Graph-API/reference/v2.2/post/,我们可以看到:, 如果帖子是公共的,任何有效的访问令牌都应该有效

PHP尝试:

第一件事。我真的需要在这里要求登录吗?我只想看公开的帖子。应用程序id和应用程序机密是否足以生成会话? 根据文档,/feed返回一个post对象数组

但是,当我使用/PAGE-ID/feed时,返回的是一个空数组:[backingData:protected]=>array

如果我只使用/PAGE-ID,它将打印基本信息,例如用户名、名称等

有什么建议吗

编辑 工作实例:

pastebin.com/8WzmzxX0

pastebin.com/wKcfB8vj


感谢

即使对于公共帖子,您也必须为特定用户使用用户令牌,并且您需要向他授予读取流权限

尽管如此,您可能想阅读以下内容:

此权限授予在Facebook尚未可用的平台上构建Facebook品牌客户端的应用程序。例如,Android和iOS应用程序将不会获得此权限的批准。此外,Web、桌面和电视应用程序将不被授予此权限

资料来源:

这是针对用户配置文件的。如果您想要检索页面提要,您甚至可以在未经授权的情况下使用应用令牌,除非该页面受国家/地区、年龄限制-在这种情况下,您需要使用用户令牌或页面令牌。有关访问令牌的更多信息:


请在这里发布您的代码。我刚刚将其添加到线程中,我尝试使用read_stream permission javascript示例进行授权,但没有成功。用户令牌是通过登录检索的,对吗?谢谢,但是您通常不需要担心令牌,sdk在内部处理令牌。什么意思是它不起作用?顺便说一句,你用错了FB.login。查看本教程:我已经按照您建议的方式尝试了登录,该部分正在运行。正如您所建议的,使用read_stream,我可以访问新闻提要,但是我如何使用这些信息呢?来自/me/feed的响应只打印了[object object],这是一个完全不同的故事,它是一个json对象。使用chrome开发工具进行调试,它们列出json对象。
window.fbAsyncInit = function() {
       FB.init
            ({
                appId   : 'APP-ID',
                status  : true, // check login status
                cookie  : true, // enable cookies to allow the server to access the session
                xfbml   : true, // parse XFBML
                version: 'v2.2'
            });
            FB.Event.subscribe('auth.login', function()
            {
                window.location.reload();
            });

      FB.getLoginStatus(function(response) {
          if (response.status === 'connected') {
            console.log('Logged in.');
            var uid = response.authResponse.userID;
            var accessToken = response.authResponse.accessToken;

           if(typeof facebookInit !== 'undefined')
                  facebookInit();
          }
          else {
            FB.login(function (response) {
                if (response.authResponse) {
                  // some code here

                } else {
                  alert("Login attempt failed!");
                }
              } //, { scope: 'read_stream' } // do I need to use scope here?
            );;
           }
        });
    };

  (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/sdk.js";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));


function facebookInit() {

    FB.api('/PAGE-ID/feed', function(response) {
       console.log(response); // the returned array is empty
});


}
session_start();

define('__ROOT__', dirname(dirname(dirname(__FILE__))));
require (__ROOT__.'/resources/facebook-php-sdk-v4-4.0-dev/autoload.php');

// added in v4.0.5
use Facebook\FacebookHttpable;
use Facebook\FacebookCurl;
use Facebook\FacebookCurlHttpClient;

// added in v4.0.0
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookOtherException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphSessionInfo;
use Facebook\GraphUser;

// init app with app id and secret
FacebookSession::setDefaultApplication('APP-ID','APP-SECRET');

// get app access_token
$session = FacebookSession::newAppSession();

// make request to Facebook                        
$request = new FacebookRequest( $session, 'GET', '/PAGE-ID/feed' ); // /PAGE-ID only would retrieve the basic info, like username
$response = $request->execute();
// get response as array


$content = $response->getGraphObject();
print_r($content);
// output html
?>