Как правильно перенаправить URL-адрес вкладки на странице Facebook после авторизации - PullRequest
2 голосов
/ 20 марта 2012

Я изменил способ, которым мое приложение на вкладке страницы Facebook запрашивает разрешения.

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

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

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

При создании URL-адреса перенаправления я знаю текущий page_id и мой app_id .Имея эту информацию, мне нужно создать URL-адрес вкладки на странице facebook, который должен выглядеть следующим образом:

https://www.facebook.com/pages/PAGE-SLUG/{#APP_ID}?sk=app_{#APP_ID}

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

РЕДАКТИРОВАТЬ: вышеупомянутый подход имеет проблему.Редирект теряет протокол SSL и использует ссылку HTTP, когда пользователь Facebook по умолчанию не использует SSL.

1 Ответ

7 голосов
/ 20 марта 2012

На самом деле это очень просто, вы можете вызвать Graph API с помощью 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"
}

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

, запрашивая Graph API с помощью:

$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"
}

Редактировать:

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

  1. Вызов API Graph с помощьюИдентификатор текущей страницы.
  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 , не ясно, что происходитесли пользователь решил не принимать заявку.Я думаю, что пользователь перенаправит обратно на redirect_uri, который затем вы можете проверить, есть ли у вас "user_id" в подписанном запросе, но я не уверен на 100% ... Создание простой демонстрационной версии приложения и проверка :-)

...