Как получить идентификатор страницы на странице приложения Facebook - PullRequest
2 голосов
/ 06 апреля 2011

У меня есть приложение, размещенное в FaceBook в виде вкладки, и я хочу получить идентификатор страницы при добавлении приложения для сохранения в моей логике. Как я могу получить идентификатор страницы, я знаю, что он хранится в URL, но когда я пытался получить его со страницы как переменную сервера, я не получаю его, даже если мое приложение настроено как iFrame? Но это стандартный способ получить родительский URL.

C #:

string t= request.serverVariables("HTTP_REFERER");

//doesn't get FB page url even if your app is configured as iframe ?!! @csharpsdk #facebook devs

Любая помощь?

Большое спасибо.

Ответы [ 3 ]

4 голосов
/ 28 апреля 2011

Вот как я это делаю:

if (FacebookWebContext.Current.SignedRequest != null)
{
  dynamic data = FacebookWebContext.Current.SignedRequest.Data;
  if (data.page != null)
  {
    var pageId = (String)data.page.id;
    var isUserAdmin = (Boolean)data.page.admin;
    var userLikesPage = (Boolean)data.page.liked;
  }
  else
  {
    // not on a page
  }
}
3 голосов
/ 06 апреля 2011

Идентификатор страницы не сохраняется в URL; он публикуется на вашей странице в параметре формы signature_request. Подробнее об этом читайте в блоге разработчика Facebook .

Вы можете использовать метод FacebookSignedRequest.Parse в SDK Facebook C # для анализа подписанного запроса (используя секрет вашего приложения). После этого вы можете извлечь идентификатор страницы из объекта JSON страницы следующим образом:

string signedRequest = Request.Form["signed_request"];

var DecodedSignedRequest = FacebookSignedRequest.Parse(FacebookContext.Current.AppSecret, SignedRequest);
dynamic SignedRequestData = DecodedSignedRequest.Data;

var RawRequestData = (IDictionary<string, object>)SignedRequestData;

if (RawRequestData.ContainsKey("page") == true)
{
    Facebook.JsonObject RawPageData = (Facebook.JsonObject)RawRequestData["page"];
    if (RawPageData.ContainsKey("id") == true)
         currentFacebookPageID = (string)RawPageData["id"];
}

Надеюсь, это поможет.

1 голос
/ 12 июня 2014

Вот то же решение, что и Энди Синклэйрс в VB, которое работало для меня:

Dim pageId as Int64 = 0
Dim signed_request As String = Request.Form("signed_request")
Dim req = FacebookSignedRequest.Parse(AppSettings("FacebookSecret"), signed_request)
Dim data As IDictionary(Of String, Object) = req.Data
If data.ContainsKey("page") Then
    Dim RawPageData As Facebook.JsonObject = data("page")
    If RawPageData.ContainsKey("id") Then
      pageId = RawPageData("id")
    End If
End If
...