Приложению Facebook не удается получить сеанс

#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. после нажатия кнопки ВОЙТИ появляется пустой фрейм