#php #facebook #heroku #facebook-php-sdk
#php #Facebook #heroku #facebook-php-sdk
Вопрос:
Я разрабатываю очень простое PHP-приложение на Heroku для Facebook, которое показывает очень простую информацию о пользователе, такую как имя, изображение профиля, но приложение останавливается в методе getToken!
Я попробовал приложение после входа в свой профиль, все то же сообщение :
Вот коды
composer.json
{}
index.php
session_start();
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/FacebookAuthorizationException.php' );
require_once( 'Facebook/GraphObject.php' );
require_once( 'Facebook/GraphUser.php' );
require_once( 'Facebook/GraphSessionInfo.php' );
use FacebookFacebookSession;
use FacebookFacebookRedirectLoginHelper;
use FacebookFacebookRequest;
use FacebookFacebookResponse;
use FacebookFacebookSDKException;
use FacebookFacebookRequestException;
use FacebookFacebookAuthorizationException;
use FacebookGraphObject;
use FacebookGraphUser;
use FacebookGraphSessionInfo;
FacebookSession::setDefaultApplication($id, $secret);
$helper = new FacebookRedirectLoginHelper('http://facebook.com');
try{
$session = $helper->getSessionFromRedirect();
} catch(Exception $e){ echo 'Error in Session > '.$e;
}
if(isset($_SESSION['token'])){
$session = new FacebookSession($_SESSION['token']);
try{
$session->Validate($id, $secret);
}catch(FacebookAuthorizationException $e){
echo 'Error in Token >'.$e; $session = '';
}
}
if(isset($session)){
$_SESSION['token'] = $session->getToken();
echo "Login Successful<br>";
$request = new FacebookRequest($session, 'GET', '/me');
$response = $request->execute();
$graph = $response->getGraphObject(GraphUser::className());
echo "Hi " . $graph->getName();
}
else{
echo "<a href = " . $helper->getLoginUrl() . ">Login With Facebook</a>";
}
Приложение всегда переходит к логину с помощью Facebook, последней части else!
В чем проблема?
Я совершенно новичок в этом Heroku и Facebook SDK v4 и после нескольких часов поиска не нашел ни одного примера приложения на Facebook для Heroku ~
Комментарии:
1. У меня установлена Windows 7, git Heroku использует PHP 5.5.4
2. Что происходит, когда вы нажимаете на Login?
3. Фрейм приложения становится пустым!
4. Должно быть, вы получаете какую-то ошибку. Можете ли вы поделиться ссылкой, если она живая?
5. Извините, он не работает, и в соответствии с рекомендациями Fb для получения одобрения приложения требуется от 7 до 14 рабочих дней. :/
Ответ №1:
Попробуйте изменить свой код на это и посмотреть, поможет ли это:
if ( isset( $_SESSION['token'] ) ) {
$session = new FacebookSession($_SESSION['token']);
try{
$session->Validate($id, $secret);
}catch(FacebookAuthorizationException $e){
echo 'Error in Token >'.$e; $session = '';
$session = null;
}
} else {
$session = null;
}
// if session is null, try getting it from redirect
if ( $session === null ) {
try{
$session = $helper->getSessionFromRedirect();
} catch(Exception $e){ echo 'Error in Session > '.$e;
}
}
if ( isset( $session ) amp;amp; $session != null ) {
$_SESSION['token'] = $session->getToken();
echo "Login Successful<br>";
$request = new FacebookRequest($session, 'GET', '/me');
$response = $request->execute();
$graph = $response->getGraphObject(GraphUser::className());
echo "Hi " . $graph->getName();
}
else{
echo "<a href = " . $helper->getLoginUrl() . ">Login With Facebook</a>";
}
Я использовал метод, аналогичный показанному здесь коду.
Комментарии:
1. после нажатия кнопки ВОЙТИ появляется пустой фрейм