2012-03-20 2 views
2

Я изменил способ, которым приложение на вкладке facebook на странице запрашивает разрешения.Как правильно перенаправить на вкладку страницы facebook URL-адрес после авторизации

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

Причина изменения заключается в том, что я считаю, что этот подход будет содержать меньше ошибок и проблем, чем использование диалогов javascript.

При использовании подхода с переадресацией мне нужно указать URL-адрес, который будет перенаправлен пользователем после предоставления разрешений. Я хотел бы, чтобы этот url был URL-страницей вкладки страницы facebook с установленным приложением.

При создании URL перенаправления, я знаю, что в настоящее время PAGE_ID и мой APP_ID. С этими деталями, мне нужно построить facebook страницу вкладки URL, который должен выглядеть следующим образом:

https://www.facebook.com/pages/PAGE-SLUG/ {#APP_ID} ск = приложение _ {#} APP_ID

Проблема заключается в том, что я не знаю? что такое PAGE-SLUG. Те тесты, которые я выполнил с указанным выше URL (используя PAGE-SLUG как-нибудь), перенаправляются на правильный URL-адрес. Однако, зная, что Facebook - очень неустойчивая платформа, я хотел бы знать, что есть лучший подход к построению этого URL-адреса перенаправления.

EDIT: У вышеуказанного подхода есть проблема. Переадресация теряет протокол SSL и использует HTTP-ссылку, когда пользователь facebook не использует SSL по умолчанию.

+0

Где вы получили формат url, содержащий PAGE-SLUG? –

+0

Я получил его со страницы, у которой нет имени пользователя. Пример: http://www.facebook.com/pages/PCS-POLI/118351744937876 (где slug - PCS-POLI) – barbolo

ответ

7

Это очень просто на самом деле, вы можете вызвать API Graph с PHP как так:

$facebook->api("/{PAGE_ID}"); 
// change {PAGE_ID} to the page id you are redirecting back to 

возвращаемое значение является JSON массив «ссылка» в нем -> это URL вы ищете: -)

Пример Возврат:

{ 
    "id": "XXXXXXXXX", 
    "name": "My Demo Page", 
    "picture": "", 
    "link": "https://www.facebook.com/pages/My-Demo-Page/XXXXXXXXX", 
    "likes": 123456, 
    "category": "Product/service", 
    "can_post": true, 
    "type": "page" 
} 

вы можете также запросить по имени страницы, если вы знаете, например:

запрашивая API Graph с:

$facebook->api("/coca-cola"); 

будет приводить:

{ 
    "id": "40796308305", 
    "name": "Coca-Cola", 
    "picture": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-snc4/174560_40796308305_2093137831_s.jpg", 
    "link": "https://www.facebook.com/coca-cola", 
    "likes": 40680159, 
    "cover": { 
    "cover_id": "10150682306963306", 
    "source": "https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-snc7/s720x720/416803_10150682306963306_40796308305_9337341_812683101_n.jpg", 
    "offset_y": 0 
    }, 
    "category": "Food/beverages", 
    "is_published": true, 
    "website": "http://www.coca-cola.com", 
    "username": "coca-cola", 
    "founded": "1886", 
    "description": "Created in 1886 in Atlanta, Georgia, by Dr. John S. Pemberton, Coca-Cola was first offered as a fountain beverage at Jacob's Pharmacy by mixing Coca-Cola syrup with carbonated water. \n\nCoca-Cola was patented in 1887, registered as a trademark in 1893 and by 1895 it was being sold in every state and territory in the United States. In 1899, The Coca-Cola Company began franchised bottling operations in the United States. \n\nCoca-Cola might owe its origins to the United States, but its popularity has made it truly universal. Today, you can find Coca-Cola in virtually every part of the world.", 
    "about": "The Coca-Cola Facebook Page is a collection of your stories showing how people from around the world have helped make Coke into what it is today.", 
    "location": { 
    "latitude": -33.816989983333, 
    "longitude": 150.84844081667 
    }, 
    "can_post": true, 
    "checkins": 80, 
    "talking_about_count": 297576, 
    "type": "page" 
} 

Edit:

Более четкое объяснение:

  1. Вызвать Graph API с током id страницы.
  2. Если результат не является ложным, то redirect_uri будет ссылкой , возвращенной с вызова. В противном случае redirect_uri должен быть yourdomain.com/middle-page.php?page_id = XXX
  3. Если пользователь принимает приложение, а redirect_uri - средняя страница, , вы снова вызываете Graph API, но на этот раз вы используете Ток доступа, полученный из Facebook. Теперь вы должны иметь реальный URL страницы, и вы можете добавить дополнительные деталей вам (как? sk_app = APP_ID)

Согласно Facebook собственной documentation, это не ясно, что происходит, если пользователь решил не не принять заявление. Я думаю, что пользователь перенаправит обратно в redirect_uri, после чего вы сможете проверить, есть ли у пользователя «user_id» в signed_request, но я не уверен на 100% ... Создание простого демонстрационного примера и проверки :-)

+2

Спасибо за ваше решение, мой друг. Но у меня были некоторые головные боли при таком подходе, потому что есть страницы Facebook, которые ограничены (для администраторов, для страны, для взрослых и т. Д.), И вам нужно передать действительный токен доступа, чтобы работал запрос графика api. – barbolo

+1

Пример: http://graph.facebook.com/seduzyr (для взрослой страницы http://www.facebook.com/seduzyr) – barbolo

+0

Я обновил свой ответ, чтобы включить решение проблемы с частными страницами – Roni

Смежные вопросы