Не удается получить доступ к Facebook signed_request с помощью вкладки iframe

#php #facebook #facebook-php-sdk

#php #Facebook #facebook-php-sdk

Вопрос:

У меня загружается iframe во вкладке facebook на странице вентилятора, и мне не удается получить доступ к объекту $ _REQUEST [«signed_request»]. Я в замешательстве, потому что это должно быть бесплатным и легко доступным. Я читал и перечитывал документы facebook и перепроверил настройки своего приложения facebook, но ничего не работает.

 isset($_REQUEST['signed_request']
  

всегда равно false. Поскольку я использую Facebook PHP sdk, я также пытался

 $facebook->getSignedRequest();
  

Я выполнил print_r для $ _REQUEST и не вижу там signed_request. Когда я печатаю объект facebook $, я вижу, что signedRequest пуст

 [appId:protected] => XXX
[apiSecret:protected] => XXXXXXXXXXXXXXXXXXXX
[session:protected] => Array

        [access_token] => XXXXXXXXXX|2.h75WqKxcA1xbNPufFvpKQQ__.3600.1304452800.1-726960374|JiO0ZS30SyLaApeqhMtdocK8B_Y
        [base_domain] => XXXXXXXXX
        [expires] => 1304452800
        [secret] => rDF9C_z43_EUFy0Q_e6tyQ__
        [session_key] => 2.h75WqKxcA1xbNPufFvpKQQ__.3600.1304452800.1-726960374
        [sig] => 1971ef7eb8057c7404eae1f82d770ab5
        [uid] => XXXXXXXXXXXXXXX


[signedRequest:protected] => 
[sessionLoaded:protected] => 1
[cookieSupport:protected] => 1
[baseDomain:protected] => 
[fileUploadSupport:protected] => 
  

[ПРАВИТЬ]
У меня действительно включен параметр OAuth 2.0 для приложения.

Комментарии:

1. У меня однажды была эта проблема, я никогда не оглядывался назад, но вы можете попробовать немного поиграть с настройками вашего приложения. Кроме этого, я думаю, вам нужно сообщить об ошибке в FB.

2. Влияет ли это на все браузеры?

Ответ №1:

Хорошо, только что столкнулся с этой проблемой сам и обнаружил проблему.

Убедитесь, что у вас нет перенаправления 301 на холст или страницу вкладки. В моем случае я настроил приложение как «mydomain.com/facebook/tab /» но мой сайт выполнял 301 запрос на «www.mydomain.com/facebook/tab /»

Содержимое будет отображаться, бит 301 привел к тому, что signedRequest стал нулевым.

Добавлен «www» в мой домен в настройках приложения, и подписанный запрос теперь содержит данные, которые я искал.

Комментарии:

1. боже .. ты потрясающий, братан!! мое приложение работало нормально на heroku, но на моем сайте оно не выдавало signed_request .. я не добавлял www в URL вкладки..

2. Спасибо, я форсировал HTTPS с тем же результатом.

Ответ №2:

У меня только что была эта проблема. Наконец-то разобрался. Мне пришлось добавить косую черту в конец URL-адресов моих вкладок в настройках приложения на вкладке Basic.

Вместо:http://domain.com/facebook

Мне нужно было:http://domain.com/facebook /

Комментарии:

1. Мне потребовался весь вечер, чтобы это исправить.

Ответ №3:

У меня была такая же проблема, и я решаю ее. Это проблема с URL-адресами. Убедитесь, что URL домена вашего приложения и вкладки страницы соответствуют тому же домену, например:

1) Домен приложения: example.com URL вкладки страницы: example.com будет работать

2) Домен приложения: example.com URL вкладки страницы: example.com/app / будет работать

3) Домен приложения: fb.example.com URL вкладки страницы: fb.example.com/app / будет работать

4) Домен приложения: fb.example.com URL вкладки страницы: example.com/fb не будет работать

Ответ №4:

После некоторого расследования я подозреваю, что это как-то связано с тем, где размещен исходный код iframe.

Когда я переместил все на localhost, signed_request начал приходить нормально.

Ответ №5:

Отредактируйте настройки вашего приложения tab. На вкладке «Дополнительно» убедитесь, что включен «OAuth 2.0 для Canvas».

Комментарии:

1. Я должен был упомянуть, что у меня включен OAuth. Спасибо.

Ответ №6:

это старый вопрос, но я нашел это в Google… проблема для меня заключалась в том, что я сделал перенаправление вручную на https URL моей вкладки страницы, а затем $ _POST [‘signed_request’] был потерян