Разработка приложений для Facebook — аутентификация с использованием Dialog API с использованием PHP

Я пытаюсь интегрировать свое веб-приложение с платформой Facebook.

ниже мой тестовый код,

 if ($_REQUEST['error_reason']) {  echo("<script> top.location.href='http://facebook.com'</script>"); }
else {  
    $app_id = "APP_CODE";
    $canvas_page = "https://e3xcp.com/hs/fb/";
    $auth_url = "http://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" . urlencode($canvas_page) "&scope=email,user_birthday,user_hometown,user_location,user_religion_politics,user_website,user_checkins";

    $signed_request = $_REQUEST["signed_request"];
    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
    $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
    if (empty($data["user_id"])) {
          echo("<script> top.location.href='" . $auth_url . "'</script>");
    } else {
          echo ("Welcome User: " . $data["user_id"] . "<BR><BR>");
          print_r($data);
          echo "<BR><BR>". $data['oauth_token'] . "<BR><BR>";

          $graph_url = "https://graph.facebook.com/me?access_token=". trim($data['oauth_token']); 
          $json_data = file_get_contents($graph_url);
          $me = json_decode($json_data);
          echo $me->id;
    }
} 

Есть две проблемы,

  1. При аутентификации (новый пользователь), когда пользователь нажимает кнопку «Разрешить», браузер перемещается между моей страницей холста и сервером facebook.

  2. Когда аутентифицированный пользователь получил доступ к приложению, я получаю сообщение об ошибке:

    **> Warning: file_get_contents(https://graph.facebook.com/me?access_token=200335043341031|2.axhed5PlPjICLqIN2ElgGA__.3600.1304254800.1-100001278552830|ez-LK5f_ymd-q9Ju4qa7zAvjEgo) [function.file-get-contents]: failed to open stream: No error in C:\Inetpub\vhosts\E3XCP.COM\httpdocs\hs\FB\index.php on line 19**
    

Но когда я копирую и вставляю URL-адрес GRAPH

  ***https://graph.facebook.com/me?access_token=200335043341031|2.axhed5PlPjICLqIN2ElgGA__.3600.1304254800.1-100001278552830|ez-LK5f_ymd-q9Ju4qa7zAvjEgo*** it returns the correct output

В документации разработчиков Facebook приведены два примера аутентификации, и я попробовал оба метода.

Ссылка на приложение: http://apps.facebook.com/slhoroscope/ Помогите !!!


person megazoid    schedule 01.05.2011    source источник


Ответы (1)


  1. Вам нужно использовать страницу холста, а не URL холста, то есть $canvas_page = "http://apps.facebook.com/slhoroscope/";
  2. Это как-то связано с вашей конфигурацией PHP, скорее всего, с расширением openssl.
person ifaour    schedule 01.05.2011
comment
@megazoid: я полагаю, <?php phpinfo(); ?>. Что касается того, как его установить, вам нужно проверить форум/учебники поддержки среды (xampp, wampserver... все, что вы установили на свой компьютер) - person ifaour; 01.05.2011
comment
ifaour, большое спасибо, приятель ... первая проблема устранена (проблема с навигацией по URL-адресу) после использования URL-адреса приложения вместо моего URL-адреса. Это одна из ключевых частей информации, опущенная в документации facebook. - person megazoid; 01.05.2011
comment
@megazoid: хотя они и используют YOUR_CANVAS_PAGE в своем примере, я согласен, что они должны еще поясните это. Они не должны рассматривать отдельную часть информации как очевидную/само собой разумеющуюся! - person ifaour; 01.05.2011
comment
@ifaour, хорошо, я следовал вашим инструкциям и обнаружил, что моя поддержка PHP для OpenSSL отключена. как включить? - person megazoid; 01.05.2011
comment
@megazoid: как я уже сказал, это действительно зависит от вашей среды. Например, я использую Wampserver (на моем компьютере с Windows), и это простой щелчок правой кнопкой мыши на значке Package App на панели запуска и отметьте openssl! - person ifaour; 01.05.2011
comment
@ifaour, мое приложение размещено на VPS Win2003 с Plesk plnel.. есть идеи? - person megazoid; 01.05.2011
comment
@megazoid: Не совсем, лучше всего обратиться в службу поддержки хоста или проверить вики-сайт хоста. - person ifaour; 01.05.2011
comment
@ifaour, я отправил запрос в службу поддержки моего хоста VPS. Давайте подождем и посмотрим, что они скажут. - person megazoid; 01.05.2011
comment
@ifaour, я попробовал тот же скрипт на другом сервере, который у меня был, и он отлично работает. Так что ДА, ваш ответ здесь на 100% правильный, и я попрошу своих ребят решить проблему с OpenSSL для моего VPS. Миллион благодарностей дружище. Вы избавили меня от многих проблем..... - person megazoid; 01.05.2011
comment
@ifaour, проблема решена. :) проверить приложение на apps.facebook.com/slhoroscope - person megazoid; 03.05.2011
comment
Почему кто-то должен использовать URL страницы холста? В последнем ответе на ошибку неправильной настройки мобильного веб-приложения говорится, что мы должны использовать адрес мобильного сайта. - person malisokan; 23.12.2013