2013-05-15 1 views
0

ИТАК треска ниже в основном работает хорошо, когда эта линия выглядит так:Как загрузить фото на Timeline Facebook Пейджа как самой странице Facebook, а не к корму пользователя

$post_url = '/'.$userPageId.'/feed'; 

Этот успешно отправляется на страницу Сроки страницы Facebook. Но я хочу, чтобы загрузить фотографию, и когда я изменить эту строку

$post_url = '/'.$userPageId.'/photos'; 

Это вывешивает фото ... но вывешивает на пользователя поток, а не как Facebook страницу.

Я хочу, чтобы это опубликовать фотографию в Facebook страницу Timeline

[config.php]

<?php 
include_once("inc/facebook.php"); 

################################## 
//Call Facebook API 

// Required facebook permissions 
$fbPermissions = 'publish_stream,manage_pages,photo_upload'; 

$facebook = new Facebook(array(
    'appId' => $appId, 
    'secret' => $appSecret, 
'fileUpload' => true, 
'cookie' => true 
)); 

$fbuser = $facebook->getUser(); 
?> 

[process.php]

<?php 
include_once("config.php"); 

if($_POST) 
{ 
    //Post variables we received from user 
    $userPageId   = $_POST["userpages"]; 
    $userMessage   = $_POST["message"]; 

    if(strlen($userMessage)<1) 
    { 
      //message is empty 
      $userMessage = 'No message was entered!'; 
    } 

    //HTTP POST request to PAGE_ID/feed with the publish_stream 
    $post_url = '/'.$userPageId.'/photos'; 

    //posts message on page statues 
    $msg_body = array(
     'source' => '@' . 'test.jpg',     
     'message' => "yo yo yo", 
    ); 

    if ($fbuser) { 
     try { 
      $postResult = $facebook->api($post_url, 'post', $msg_body); 
     } catch (FacebookApiException $e) { 
      echo $e->getMessage(); 
     } 
    } else { 
     $loginUrl = $facebook->getLoginUrl(
      array('redirect_uri'=>$homeurl,'scope'=>$fbPermissions) 
     ); 
     header('Location: ' . $loginUrl); 
    } 

    //Show sucess message 
    if($postResult) 
    { 

    } 
} 
?> 

[index.php] (для регистрации)

<?php 
include_once("config.php"); 
if ($fbuser) 
{ 
    try { 
     $user_profile = $facebook->api('/me'); 
     //Get user pages details using Facebook Query Language (FQL) 
     $fql_query = 'SELECT page_id, name, page_url FROM page ' 
      .'WHERE page_id IN (SELECT page_id FROM page_admin WHERE uid=' 
      .$fbuser.')'; 
     $postResults = $facebook->api(
      array('method' => 'fql.query', 'query' => $fql_query) 
     ); 
    } catch (FacebookApiException $e) { 
     echo $e->getMessage(); 
     $fbuser = null; 
    } 
} else { 
    //Show login button for guest users 
    $loginUrl = $facebook->getLoginUrl(
     array('redirect_uri'=>$homeurl,'scope'=>$fbPermissions) 
    ); 
    echo '<a href="'.$loginUrl. 
     '"><img src="images/facebook-login.png" border="0"></a>'; 
    $fbuser = null; 
} 

if($fbuser && empty($postResults)) 
{ 
    /* 
    if user is logged in but FQL is not returning any pages, we need to make 
    sure user does have a page OR "manage_pages" permissions isn't granted yet 
    by the user. Let's give user an option to grant permission again. 
    */ 
    $loginUrl = $facebook->getLoginUrl(
     array('redirect_uri'=>$homeurl,'scope'=>$fbPermissions) 
    ); 
    echo '<br />Could not get your page details!'; 
    echo '<br /><a href="'.$loginUrl.'">Click here to try again!</a>'; 
} 
elseif ($fbuser && !empty($postResults)) 
{ 
    //Everything looks good, show message form. 
} 
?> 

ответ

4

Если вы хотите, чтобы действовать в качестве Facebook страницу и загрузить фотографию, как таковой, вам необходимо:

  1. Чтобы быть администратором на Facebook страницу
  2. По крайней мере, следующие области применения при получении разрешений: «manage_pages »,„photo_upload“
  3. маркер доступа как Facebook страницу, а не пользователя, который является администратором

вы можете получить маркеры доступа к Facebook Pages вы админ, вызвав Open Graph API:

$accounts = $facebook->api('/me/accounts','GET'); 

Чтобы получить токен доступа и дополнительную информацию, вам необходимо разрешение «manage_pages».

После того, как у вас есть токен доступа, вам нужно будет его использовать и повторно инициализировать с ним клиент. Тогда вы можете по существу действовать так же, как и опубликовать фотографию. Надеюсь, этого будет достаточно, чтобы вы начали. Ваш код выглядит настроенным, чтобы иметь возможность загружать фотографию туда, где вы хотите. Все дело в токене доступа.

Edit:

Вы можете установить маркер доступа с PHP SDK с setAccessToken:

// Set a new access token, by first getting it via means other than the SDK 
$facebook->setAccessToken($new_access_token); 
+0

Большое спасибо за первый луч света в этот вопрос для меня :) Что ты говорить имеет смысл ... однако ... Мне интересно о токенах доступа ... Где установить токен доступа? –

+0

Отредактирован мой ответ, чтобы показать, как установить токен доступа. – JayNCoke

+0

Итак, я использовал, $ access_token = $ facebook-> getAccessToken(); и это создает токен ...однако, я не знаю, какие из моих страниц Facebook он генерирует (или если это имеет значение) Я пробовал добавить: $ new_access_token = "mytokenhere"; $ facebook-> setAccessToken ($ new_access_token); код process.php, но изменений не было ... до сих пор ... угадывая, возможно, мне нужно будет получить код маркера, специфичный для страницы? но не уверен ... спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^