Facebook Graph API – вкладка страницы Дополнительные разрешения

Я пытаюсь создать вкладку приветствия для одной из моих страниц, но я хотел бы иметь доступ к понравившимся пользователям (разрешение user_likes).

Я могу найти документацию о том, как это сделать для приложения Facebook или веб-сайта, интегрирующего Facebook, я не могу найти документацию о том, как это сделать для приложения (вкладки) на странице facebook (в качестве вкладки приветствия).

Возможно ли в качестве вкладки страницы запрашивать дополнительные разрешения у пользователя, но разрешить доступ к ней без нее, или мне нужно сделать приложение, а также вкладку страницы? Возможно, у меня есть кнопка, которая при нажатии на нее предоставляет дополнительные разрешения страницы?

В настоящее время я пытаюсь выполнить две отдельные реализации, ни одна из которых я не могу работать, PHP и Javascript.

Благодаря,


Просто используя

$loginUrl = $fb->getLoginUrl( array('canvas' => 1, 'scope' => 'user_likes,user_about_me,user_birthday') ); echo "<a href='$loginUrl'>Login</a>"; 

Результаты в ссылке, которая просто перенаправляет пользователя (в пределах страницы iframe) на экран с логотипом Facebook. Мне нужен диалог прав доступа!

Ошибка в Facebook


Использование кода javascript

 <script> FB.init({ appId : 'APPID', status : true, // check login status cookie : true, // enable cookies to allow the server to access the session xfbml : true, // parse XFBML oauth : true // enable OAuth 2.0 }); FB.login(function(response) { if (response.authResponse) { console.log('Welcome! Fetching your information.... '); FB.api('/me', function(response) { console.log('Good to see you, ' + response.name + '.'); FB.logout(function(response) { console.log('Logged out.'); }); }); } else { console.log('User cancelled login or did not fully authorize.'); } }, {scope: 'email'}); </script> 

Результаты в

 Unsafe JavaScript attempt to access frame with URL https://www.facebook.com/dialog/oauth?api_key=158609350887973&app_id=158609350887973&client_id=158609350887973&display=popup&locale=en_US&method=permissions.oauth&origin=1&redirect_uri=http%3A%2F%2Fstatic.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%3Fversion%3D3%23cb%3Df2f7aed38%26origin%3Dhttp%253A%252F%url.com%252Ff3634c5da%26relation%3Dopener%26transport%3Dpostmessage%26frame%3Df9748b77&response_type=token%2Csigned_request&scope=email&sdk=joey from frame with URL http://url.com/gs/index.php. Domains, protocols and ports must match. 

В javascript также появляется следующее всплывающее окно с ошибкой

Код ошибки API: 191, API Описание ошибки: Указанный URL не принадлежит приложению, Сообщение об ошибке: Неверный redirect_uri: данный URL-адрес не разрешен конфигурацией приложения.


Настройки моего приложения

Настройки Facebook

Вы видите ошибку в своем всплывающем окне, потому что redirect_uri в URL-адресе авторизации не соответствует тому, что указано в URL вашего сайта в конфигурации приложения. Чтобы решить эту проблему, вам нужно включить опцию «Веб-сайт» в конфигурации приложения. Включите его, установив флажок рядом с «Веб-сайт», а затем введите http://Site.com (или независимо от вашего реального URL-адреса сайта) в текстовом поле «URL-адрес сайта». Этот URL-адрес должен соответствовать URL-адресу хоста, который вы предоставляете в redirect_uri. Это должно решить проблему всплывающего окна.

Что касается ошибки «Небезопасная ошибка JavaScript для доступа к фрейму», используете ли вы браузер веб-кита? Webkit выдает эти ошибки, но по большей части можно игнорировать. См. Это для получения дополнительной информации: ошибка «Небезопасная попытка JavaScript для доступа к фрейму с URL …» постоянно генерируется в инспекторе Chrome webkit

Используйте идентификатор пользователя в объекте ответа вместо «я», когда вы вызываете FB.api. Оба метода указывают на то, что у вас нет настроек домена вашего сайта в настройках приложения.

Мы делаем эту точную вещь во многих наших приложениях для вкладок, поэтому это определенно возможно.

Похоже, вы используете одно и то же значение для app_id и api_key. Они должны быть разными.

Вместо отображения ссылки ($ loginUrl) попробуйте перенаправить пользователя, например, используя функцию заголовка php или js location.href.