0

I wrote a code to upload videos to my Facebook fanpage, but it gets uploaded to the community of my fanpage.

May someone help me, what is the problem with my code?

My code:

$appId = 'xxxxxxxxxxx';
$appSecret ='xxxxxxxxxx';

$my_url = ':my website url';
$perms_str = "publish_actions";

$videoPath = 'xxxxxxxxxx';
$title = 'xxxxxxxxxx';
$descriptions = 'xxxxxxxxxxx';

if (!isset($_GET['code'])) {
    $auth_url = "http://www.facebook.com/dialog/oauth?client_id="
        . $appId . "&redirect_uri=" . urlencode($my_url)
        . "&scope=" . $perms_str;
    echo("<script>top.location.href='" . $auth_url . "'</script>");
} else {
    $token_url = "https://graph.facebook.com/oauth/access_token?client_id="
        . $appId . "&redirect_uri=" . $my_url
        . "&client_secret=" . $appSecret
        . "&code=" . $_GET['code'];

    $response = file_get_contents($token_url);
    $access_token = Json::decode($response)['access_token'];

    $fb = new Facebook([
       'app_id' => $appId,
       'app_secret' => $appSecret,
       'default_graph_version' => 'v2.10',
    ]);

    $pageId = 'xxxxxxxxxxxx';

    $fileToUpload = $videoPath ;
    $whereUpload = '/'.$pageId.'/videos';

    $data = [
        'title' => $_SESSION['fileToUpload']['title'],
        'caption' => $_SESSION['fileToUpload']['descriptions'],
        'source' => $fb->fileToUpload($fileToUpload)
    ];
}

try {
    $response = $fb->post($whereUpload, $data, $access_token);
} catch (Facebook\Exceptions\FacebookResponseException $e) {
    // When Graph returns an error
    echo 'Graph returned an error: ' . $e->getMessage();
    exit;
} catch (Facebook\Exceptions\FacebookSDKException $e) {
    // When validation fails or other local issues
    echo 'Facebook SDK returned an error: ' . $e->getMessage();
    exit;
}
Antti29
  • 2,953
  • 12
  • 34
  • 36
vm30
  • 9
  • 2
  • You did not use a page access token ... – CBroe Aug 08 '17 at 07:22
  • where exactly, I did it actually $access_token = Json::decode($response)['access_token']; – vm30 Aug 08 '17 at 09:22
  • That is the endpoint to retrieve a _user_ access token from the code parameter the login flow returns. If you want to perform any action in the name of a page, you need to use a _page_ access token. https://developers.facebook.com/docs/facebook-login/access-tokens/ – CBroe Aug 08 '17 at 09:24

1 Answers1

0

thank you cBroe , i added this code and this worked

 $token_url = "https://graph.facebook.com/oauth/access_token?client_id="
    . $appId . "&redirect_uri=" . $my_url
    . "&client_secret=" . $appSecret
    . "&code=" . $_GET['code'];

 $response = file_get_contents($token_url);
 $access_token = Json::decode($response)['access_token'];

 $ch = curl_init();
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_URL, 
     'https://graph.facebook.com/v2.10/'.$pageId.'/?
      access_token='.$access_token.'&debug=all&fields=access_token&format=json 
      &method=get&pretty=0&suppress_http_code=1');
  $content = curl_exec($ch);
  $pageAccessToken=Json::decode($content)['access_token'];
vm30
  • 9
  • 2