我正在尝试将我的应用程序转换为最新版本的Facebook PHP SDK(V4).我有三个问题:第一个问题是每次调用(使用我的代码)都需要经历getLoginUrl()函数.这对我来说似乎很奇怪,因为会话的重点是不必为每次调用生成新代码,对吗?其次,我正在试图弄清楚如何访问数据 - 现在所有内容都包含在["backingData":protected]节点中...当我尝试访问时...给我一个致命错误:
Cannot access protected property Facebook\GraphObject::$backingData
最后,我假设我收到此错误,因为我没有请求正确的权限.正如您将在我的代码中看到的那样,我使用之前的'scope'数组语法作为getLoginUrl()函数中的参数...但它永远不会弹出并要求我接受权限.
这是我的代码:
require_once( 'fb2/FacebookSession.php' ); require_once( 'fb2/FacebookRedirectLoginHelper.php' ); require_once( 'fb2/FacebookRequest.php' ); require_once( 'fb2/FacebookResponse.php' ); require_once( 'fb2/FacebookSDKException.php' ); require_once( 'fb2/FacebookRequestException.php' ); require_once( 'fb2/FacebookAuthorizationException.php' ); require_once( 'fb2/GraphObject.php' ); require_once( 'fb2/FacebookOtherException.php' ); use Facebook\FacebookSession; use Facebook\FacebookRedirectLoginHelper; use Facebook\FacebookRequest; use Facebook\FacebookResponse; use Facebook\FacebookSDKException; use Facebook\FacebookRequestException; use Facebook\FacebookAuthorizationException; use Facebook\GraphObject; use Facebook\FacebookOtherException; session_start(); FacebookSession::setDefaultApplication('522464134491111', ''); $helper = new FacebookRedirectLoginHelper('https://mediaalias.com/fb_apps/graph_search_2.php/'); try { $session = $helper->getSessionFromRedirect(); } catch(FacebookRequestException $ex) { } catch(\Exception $ex) { } if ( isset( $session ) && $session ) { // graph api request for user data $request = new FacebookRequest( $session, 'GET', '/breakthelimit/posts' ); $response = $request->execute(); // get response $posts = $response->getGraphObject(); // print data echo " "; var_dump($posts); echo ""; } else { // show login url echo 'Login'; }
我正在尝试获取每个页面帖子的ID.以前,这非常简单.
以下是我在API中的回复:
object(Facebook\GraphObject)#289 (1) { ["backingData":protected]=> array(2) { ["data"]=> array(20) { [0]=> object(stdClass)#5 (18) { ["id"]=> string(31) "213418912041722_602369633146646" ["from"]=> object(stdClass)#6 (3) { ["category"]=> string(7) "Website" ["name"]=> string(20) "Favorite Exotic Car?" ["id"]=> string(15) "213418912041722" }
同样,对我来说,问题是,每次刷新脚本时,代码都必须在每次刷新脚本时生成一个新代码(令牌? - 它表示?code =).而且,如何访问响应中的数据?
我试过倾销:
$posts->backingData['data']
这是我得到致命错误的地方.然后直接去:
$posts->data
返回NULL.
任何帮助表示赞赏.