Javascript 从facebook-sdk 4.0检索提要
我一直在尝试使用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/wKcfB8vjJavascript 从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
感谢即使对于公共帖子,您也必须为特定用户使用用户令牌,并且您需要向他授予读取流权限 尽管如此,您可能想阅读以下内容: 此权限授予在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
?>