我无法从php Facebook graph api获得任何价值 [英] I can't get any value from php Facebook graph api
问题描述
这是我的完整代码。
< meta charset = utf-8 >
< ; php
// 包含Facebook SDK所需的文件
require_once(' Facebook / HttpClients / FacebookHttpable.php');
require_once(' Facebook / HttpClients / FacebookCurl.php');
require_once(' Facebook / HttpClients / FacebookCurlHttpClient.php');
require_once(' Facebook / Entities / AccessToken.php');
require_once(' Facebook / Entities / SignedRequest.php');
require_once(' Facebook / FacebookSession.php');
require_once(' Facebook / FacebookRedirectLoginHelper.php');
require_once(' Facebook / FacebookRequest.php');
require_once(' Facebook / FacebookResponse.php');
require_once(' Facebook / FacebookSDKException.php');
require_once(' Facebook / FacebookRequestException.php');
require_once(' Facebook / FacebookOtherException.php');
require_once(' Facebook / FacebookAuthorizationException.php');
require_once(' Facebook / GraphObject.php');
require_once(' Facebook / GraphSessionInfo.php');
使用Facebook \ HttpClients \ FacebookHttpable;
使用Facebook \ HttpClients \ FacebookCurl;
使用Facebook \ HttpClients \ FacebookCurlHttpClient;
使用Facebook \ Entities \ AccessToken;
使用Facebook \ Entities \ SignignRequest;
使用Facebook \ FacebookbookSession;
使用Facebook \ Facebook'sRedirectLoginHelper;
使用Facebook \ Facebook书面请求;
使用Facebook \ FacebookResponse;
使用Facebook \ FacebookSDKException;
使用Facebook \ FacebookRequestException;
使用Facebook \ FriebookOtherException;
使用Facebook \ Facebook BookAuthorizationException;
使用Facebook \ GraphObject;
使用Facebook \ GraphSessionInfo;
// start session
session_start();
// 具有应用ID和秘密的初始应用
FacebookSession :: setDefaultApplication(' KEY',' SECRET');
// 使用redirect_uri的登录助手
$ helper = new FacebookRedirectLoginHelper(' SITE_NAME.php');
// 查看现有会话是否存在
if (isset( $ _ SESSION )&& isset($ _SESSION [' fb_token'])){
// 从已保存的access_token创建新会话
$ session = new FacebookSession($ _SESSION [' fb_token']);
// 验证access_token以确保它仍然有效
尝试 {
if (!$ session-> validate()){
$ session = null ;
}
} catch (例外 $ e ){
< span class =code-comment> // 捕获任何异常
$ session = null ;
}
}
if (!isset( $ session )|| $ session === null ){
// 没有会话
尝试 {
$ session = $ helper-> getSessionFromRedirect();
} catch(FacebookRequestException $ ex ){
// 当Facebook返回错误
// 在生产中更好地处理代码
print_r( $ ex );
} catch(例外 $ ex ){
// 验证失败或其他本地问题
< pre lang = PHP > //在生产代码中更好地处理这个问题
print_r($ ex);
}
}
//看看我们是否有会话
if(isset($ session)){
//保存会话
$ _SESSION ['fb_token'] = $ session-> getToken();
//使用保存的令牌或我们在登录时生成的新令牌创建会话
$ session = new FacebookSession($ session-> getToken());
//用户数据的图表api请求
$ request = new FacebookRequest($ session,'GET','*** / 1458726944414455 / likes ***');
$ response = $ request-> execute();
//得到回复
$ graphObject = $ response-> getGraphObject() - > asArray();
//打印个人资料数据
echo'< pre > '。 print_r($ graphObject,1)。 '
';
//使用session和redirect_uri打印注销网址(logout.php页面应该会破坏会话)
echo' 退出';
}否则{
//显示登录URL
echo'登录';
}
在上面的*** ***部分,如果我放了一些Facebook页面名称或'我',代码工作正常。但是当我插入'/ 1458726944414455 / likes'之类的东西时,我无法获得任何价值,所以结果总是如此
数组()
令我生气的原因是,/ 1458726944414455 /喜欢在https://developers.facebook.com/tools/explorer中运行,这是Graph API资源管理器。我认为在API API浏览器和我自己的网站中,令牌范围没有那么不同。
有什么问题?我搜索了每个关于facebook php sdk或graph api的网站,但他们使用了几乎相同的代码。
这是因为我没有做任何事情关于审核提交表格?我只是使用默认的App Status&评论。但我认为这无所谓,因为我没有像Facebook那样登录Facebook。有什么问题?
感谢您的阅读。
helper = new FacebookRedirectLoginHelper(' SITE_NAME.php');
// 查看现有会话是否存在
if (isset(
_SESSION )&& isset(
_SESSION [' fb_token'])){
// 从已保存的access_token创建新会话
This is my full code.
<meta charset="utf-8">
<?php
// include required files form Facebook SDK
require_once( 'Facebook/HttpClients/FacebookHttpable.php' );
require_once( 'Facebook/HttpClients/FacebookCurl.php' );
require_once( 'Facebook/HttpClients/FacebookCurlHttpClient.php' );
require_once( 'Facebook/Entities/AccessToken.php' );
require_once( 'Facebook/Entities/SignedRequest.php' );
require_once( 'Facebook/FacebookSession.php' );
require_once( 'Facebook/FacebookRedirectLoginHelper.php' );
require_once( 'Facebook/FacebookRequest.php' );
require_once( 'Facebook/FacebookResponse.php' );
require_once( 'Facebook/FacebookSDKException.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/FacebookOtherException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/GraphObject.php' );
require_once( 'Facebook/GraphSessionInfo.php' );
use Facebook\HttpClients\FacebookHttpable;
use Facebook\HttpClients\FacebookCurl;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\Entities\AccessToken;
use Facebook\Entities\SignedRequest;
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;
// start session
session_start();
// init app with app id and secret
FacebookSession::setDefaultApplication( 'KEY','SECRET' );
// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper( 'SITE_NAME.php' );
// see if a existing session exists
if ( isset( $_SESSION ) && isset( $_SESSION['fb_token'] ) ) {
// create new session from saved access_token
$session = new FacebookSession( $_SESSION['fb_token'] );
// validate the access_token to make sure it's still valid
try {
if ( !$session->validate() ) {
$session = null;
}
} catch ( Exception $e ) {
// catch any exceptions
$session = null;
}
}
if ( !isset( $session ) || $session === null ) {
// no session exists
try {
$session = $helper->getSessionFromRedirect();
} catch( FacebookRequestException $ex ) {
// When Facebook returns an error
// handle this better in production code
print_r( $ex );
} catch( Exception $ex ) {
// When validation fails or other local issues
<pre lang="PHP"> // handle this better in production code
print_r( $ex );
}
}
// see if we have a session
if ( isset( $session ) ) {
// save the session
$_SESSION['fb_token'] = $session->getToken();
// create a session using saved token or the new one we generated at login
$session = new FacebookSession( $session->getToken() );
// graph api request for user data
$request = new FacebookRequest( $session, 'GET', '***/1458726944414455/likes***' );
$response = $request->execute();
// get response
$graphObject = $response->getGraphObject()->asArray();
// print profile data
echo '<pre>' . print_r( $graphObject, 1 ) . '
';
// print logout url using session and redirect_uri (logout.php page should destroy the session)
echo 'Logout';
} else {
// show login url
echo 'Login';
}
In *** *** section above, if I put some Facebook page names or 'me', the code works fine. But when I insert '/1458726944414455/likes' something like this, I can't get any value so the results are always like this
Array ( )
What makes me mad is, /1458726944414455/likes this works fine in https://developers.facebook.com/tools/explorer, which is Graph API explorer. I think token scope is not that different in Graph API explorer and my own website.
What is wrong? I searched every website which wrote about facebook php sdk or graph api, but they are using almost same code with me.
Is this because that I didn't do anything about Review Submission Form? I just using the default App Status & Review. But I thought that it doesn't matter because I don't do login with Facebook something like that. What is wrong?
Thank you for reading.
helper = new FacebookRedirectLoginHelper( 'SITE_NAME.php' ); // see if a existing session exists if ( isset(
_SESSION ) && isset(
_SESSION['fb_token'] ) ) { // create new session from saved access_token
这篇关于我无法从php Facebook graph api获得任何价值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!