如何在我的Facebook应用程序页面中获取页面ID

我的应用程序作为选项卡托管在FaceBook中,我希望在添加应用程序时将页面ID添加到我的逻辑中。 如何获取页面ID,我知道它存储在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 

有帮助吗?

非常感谢。

我是这样做的:

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

页面ID不存储在URL中; 它会在signed_request表单参数中发布到您的页面。 有关详细信息,请参阅此Facebook开发者博客文章 。

您可以使用Facebook C#SDK中的FacebookSignedRequest.Parse方法来解析签名的请求(使用您的应用秘密)。 完成此操作后,您可以从Page JSON对象中提取页面ID,如下所示:

 string signedRequest = Request.Form["signed_request"]; var DecodedSignedRequest = FacebookSignedRequest.Parse(FacebookContext.Current.AppSecret, SignedRequest); dynamic SignedRequestData = DecodedSignedRequest.Data; var RawRequestData = (IDictionary)SignedRequestData; if (RawRequestData.ContainsKey("page") == true) { Facebook.JsonObject RawPageData = (Facebook.JsonObject)RawRequestData["page"]; if (RawPageData.ContainsKey("id") == true) currentFacebookPageID = (string)RawPageData["id"]; } 

希望这可以帮助。

这里的解决方案与Andy Sinclairs在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