PHP Facebook SDK 4.0作为页面服务器发布到服务器

PHP Facebook SDK 4.0作为页面服务器发布到服务器,php,facebook,facebook-graph-api,sdk,Php,Facebook,Facebook Graph Api,Sdk,自从6天以来,我一直试图在Facebook页面上发布一个页面,但没有成功,使用新的Facebook SDK 4.0.4真是令人沮丧 我使用PHP5.4(根据Facebook 4.0 SDK版本的要求)。 我已经读了很多次facebook的文档(不太清楚) 要登录,请执行以下操作: <?php require_once( BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookSession.php' ); req

自从6天以来,我一直试图在Facebook页面上发布一个页面,但没有成功,使用新的Facebook SDK 4.0.4真是令人沮丧

我使用PHP5.4(根据Facebook 4.0 SDK版本的要求)。 我已经读了很多次facebook的文档(不太清楚)

要登录,请执行以下操作:

<?php

require_once( BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookSession.php' );
require_once( BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookRedirectLoginHelper.php' );
require_once( BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookRequest.php' );
require_once( BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookResponse.php' );
require_once( BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookSDKException.php' );
require_once( BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookRequestException.php' );
require_once( BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookOtherException.php' );
require_once( BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookAuthorizationException.php' );
require_once( BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/GraphObject.php' );
require_once( BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/GraphSessionInfo.php' );
require_once( BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookServerException.php' );

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\FacebookServerException;



        session_start();


        // init app with app id and secret
        FacebookSession::setDefaultApplication($site["facebook_appid"],$site["facebook_appsecret"] );

        // login helper with redirect_uri
        $helper = new FacebookRedirectLoginHelper($site["url"].$_SERVER['REQUEST_URI']);

        // 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;
          }
           echo '<a href="' . $helper->getLogoutUrl( $session, 'http://yourwebsite.com/app/logout.php' ) . '">Logout</a>';
        } else {
          // no session exists

          try {
            $session = $helper->getSessionFromRedirect();
          } catch( FacebookRequestException $ex ) {
            // When Facebook returns an error
          } catch( Exception $ex ) {
            // When validation fails or other local issues
            echo $ex->message;
          }

          echo '<a href="' . $helper->getLoginUrl( array( 'public_profile', 'email', 'user_friends' , 'publish_stream', 'manage_pages', 'publish_actions', 'status_update', 'user_likes ',  'photo_upload') ) . '">Login</a>';


        }



///////////////////////////
// SHORT LIVED TOKEN
  $request = new FacebookRequest( $session, "GET", "/".$site["facebook_appid"]."/accounts?access_token=".$site["facebook_appid"]."|".$site["facebook_appsecret"]."&grant_type=client_credentials" );
  $response = $request->execute();
  // get response
  $graphObject = $response->getGraphObject()->asArray();


  if (DebugMode) e($graphObject);

    $site['facebook_short-lived_access_token'] =  $graphObject['data'][0]->access_token;

////////////////////////

///////////////////////////
// LONG LIVED TOKEN
  $request = new FacebookRequest( $session, "GET", "/oauth/access_token?grant_type=fb_exchange_token&client_id=".$site["facebook_appid"]."&client_secret=".$site["facebook_appsecret"]."&fb_exchange_token=" .$site['facebook_short-lived_access_token']);
  $response = $request->execute();
  // get response
  $graphObject = $response->getGraphObject()->asArray();


  if (DebugMode) e($graphObject);

    $site['facebook_long-lived_access_token'] =  $graphObject['access_token'];
    $_SESSION['fb_token'] = $site['facebook_long-lived_access_token'];

    if (DebugMode) e($site['facebook_long-lived_access_token']);

?>

我并不真正喜欢facebook SDK,但我注意到有一行我怀疑是不正确的:

echo '<a href="' . $helper->getLoginUrl( array( 'public_profile', 'email', 'user_friends' , 'publish_stream', 'manage_pages', 'publish_actions', 'status_update', 'user_likes ',  'photo_upload') ) . '">Login</a>';
echo';
可以找到有关此功能的facebook文档。 它指出,要请求额外的权限,可以使用索引“scope”和字符串中的值(在每个要请求的权限之间使用逗号)来指定一个数组,而不是使用索引调用权限但其中没有任何数据的数组。我想应该是这样的:

$helper->getLoginUrl( array( 'scope' => 'public_profile,email,user_friens,publish_stream,<and so on>'));
$helper->getLoginUrl(数组('scope'=>'public\u profile,email,user\u friens,publish\u stream');

我希望这对你有帮助。

没有人能帮你。。。这个问题真的没有解决办法吗?40天和274次查看之后,仍然没有答案的阴影。。。
$helper->getLoginUrl( array( 'scope' => 'public_profile,email,user_friens,publish_stream,<and so on>'));