Я пытаюсь опубликовать изображение на Facebook, используя PHP SDK, но не могу подключиться к сеансу. Я использую PHP 5.5.20 и последний официальный SDK, предоставленный Facebook. На данный момент я сделал только тестовый код, чтобы увидеть, как использовать этот SDK, но он всегда запрашивает вход без установки токена сеанса или возвращает ошибку: «ошибка запроса: не удалось подключиться к хосту». Где я не прав?
<?php
session_start();
require_once 'Frameworks/Facebook/autoload.php';
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRequestException;
use Facebook\FacebookRedirectLoginHelper;
$api_key = '[APP_KEY]';
$api_secret = '[SECRET_KEY]';
$redirect_login_url = 'http://sketchy.ga/test.php';
FacebookSession::setDefaultApplication($api_key, $api_secret);
$helper = new FacebookRedirectLoginHelper($redirect_login_url);
if ( isset( $_SESSION ) && isset( $_SESSION['fb_token'] ) ) {
$session = new FacebookSession( $_SESSION['fb_token'] );
try {
if ( !$session->validate() ) $session = null;
} catch ( Exception $e ) {
$session = null;
echo 'No session: '.$e->getMessage();
}
} elseif ( empty( $session ) ) {
try {
$session = $helper->getSessionFromRedirect();
} catch( FacebookRequestException $e ) {
echo 'Facebook (session) request error: '.$e->getMessage();
} catch( Exception $e ) {
echo 'Other (session) request error: '.$e->getMessage();
}
}
if ( isset( $session ) ) {
$_SESSION['fb_token'] = $session->getToken();
$session = new FacebookSession( $session->getToken() );
try {
$request = new FacebookRequest(
$session,
'POST',
'/me/feed',
array(
'message' => 'Hello world!!'
)
);
$response = $request->execute();
$graphObject = $response->getGraphObject();
echo '<pre>' . print_r( $graphObject, 1 ) . '</pre>';
$msgid = $graphObject->getProperty('id');
} catch ( FacebookRequestException $e ) {
echo 'Facebook (post) request error: '.$e->getMessage();
}
if ( isset ( $msgid ) ) {
$parts = explode('_', $msgid);
try {
$request2 = new FacebookRequest(
$session,
'GET',
'/'.$parts[1]
);
$response2 = $request2->execute();
$graphObject2 = $response2->getGraphObject();
echo '<pre>' . print_r( $graphObject2, 1 ) . '</pre>';
} catch ( FacebookRequestException $e ) {
echo 'Facebook (get) request error: '.$e->getMessage();
}
}
} else {
echo 'No session, please <a href="'. $helper->getLoginUrl( array( 'publish_actions' ) ).'">login</a>.';
}
?>
Задача ещё не решена.
Других решений пока нет …