我使用Facebook的SDK喜歡CodePlex從如果頁面在我的Facebook應用程序
我試過在How to get the Page Id in my Facebook Application page
這建議如何得到是這樣的:
但我的data.page爲空。
我是否需要在授權或其他方面要求額外的權限?
建議,但我只有一個AppID不是頁面ID。
任何想法?
我使用Facebook的SDK喜歡CodePlex從如果頁面在我的Facebook應用程序
我試過在How to get the Page Id in my Facebook Application page
這建議如何得到是這樣的:
但我的data.page爲空。
我是否需要在授權或其他方面要求額外的權限?
建議,但我只有一個AppID不是頁面ID。
任何想法?
這是怎麼了,我得到了答案,我渴望聽到的話,任何人有更好的建議
FacebookWebClient fbApi = new FacebookWebClient(FacebookWebContext.Current.AccessToken);
dynamic peramaters = new ExpandoObject();
peramaters.method = "pages.isFan";
peramaters.page_id = ConfigurationManager.AppSettings["PageId"];
dynamic likes = fbApi.Get(peramaters);
if (!(bool)likes) // do stuff
您不需要任何額外的權限或授權。根據此Facebook blog post.提供signed request中的「喜歡」信息每次用戶在頁面選項卡上單擊您的iFrame應用程序時,都會發布該信息。
我認爲你缺少的步驟是解碼簽名的請求(使用你的Facebook應用程序的祕密)。
您可以使用Facebook C#SDK中的FacebookSignedRequest.Parse
方法解析已簽名的請求(通過將Facebook應用程序的祕密應用於其中)。一旦你做到了這一點,你可以提取「喜歡」從頁面JSON對象標誌如下:
var DecodedSignedRequest = FacebookSignedRequest.Parse(FacebookContext.Current.AppSecret, FacebookWebContext.Current.SignedRequest.Data);
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"];
if (RawPageData.ContainsKey("liked") == true)
currentFacebookPageLiked = (bool)RawPageData["liked"];
}
或者你也可以,按照my other answer,使用由Facebook上張貼到您的iframe應用程序的singed_request表單變量。
希望這會有所幫助。
就想通了這一點,在FacebookWebContext.Current.SignedRequest對象頁的數據中只填入當在查看完整應用程序(無左側面板)時,Canvas應用程序將被視爲頁面選項卡(左右側面板),因此不存在任何頁面數據。
感謝@Mark,它很高興能夠理解這一點。 – Axe 2011-06-22 09:57:22
嗨,謝謝你的迴應,我可以得到單一的請求,但它只有數據對象只有以下密鑰算法,過期,issued_at,oauth_token,user和user_id。 ...沒有頁面 – Axe 2011-05-07 05:37:01