我无法从php Facebook graph api获得任何价值 [英] I can't get any value from php Facebook graph api

查看:62
本文介绍了我无法从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆