本文介绍了我无法从php Facebook graph api获得任何价值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 这是我的完整代码。 < 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 ){ // 捕获任何异常 $ 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获得任何价值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
09-05 12:12
查看更多