2016-03-29 31 views
-2

所以我想要做的是從Facebook閱讀朋友的帖子(然後顯示在MVC),但Facebook的文檔是相當缺乏和過時。其他 網站的教程遭受同樣的:即使從2014年的文章已經過時。根據我的理解,我必須註冊爲fb dev(已完成),註冊我的應用程序 (完成),獲取應用程序令牌(半完成,我只獲取用戶訪問令牌),然後使用HttpClient獲取URL (這是真正的問題開始的地方)。 因此,首先 - 網址應該是什麼樣子?到目前爲止,我設法想出這個設置:閱讀在MVC的facebook發佈

https://graph.facebook.com/<profile_id>/feed?access_token=<user_access_token>/

這應該是(據我所知至少),檢索指定用戶的最新帖子,但我得到的,當我粘貼到瀏覽器:

{ 
    "data": [ 

    ] 
} 

在上述網址中的「喂」也可以用「帖子」取代,但我只是不明白這兩者之間的區別。在閱讀了一些(過時的)graph-api基礎知識之後,我知道另一個查詢語法應該是正確的,並且可以在他們的圖形api資源管理器中進行測試,但是我再一次不知道如何導致其文檔是缺乏(無論我嘗試什麼,我都會收到錯誤)。它應該檢索5個用戶的最新帖子,但是當我嘗試在其資源管理器中調試它時,它說我需要包含一個令牌,但我不知道如何去做。這就是它的樣子:me?fields=posts.limit(5) 順便說一句,有沒有更快捷的方式獲取配置文件的ID,而不是使用Google搜索的頁面來實現它?在閱讀Facebook的解密之後,我設法找不到任何東西。 另一個問題是:我如何獲得應用程序令牌而不是用戶訪問令牌?第一個選項在任何時候都是灰色的。

+0

官方文檔不過時。 https://developers.facebook.com/docs/graph-api/reference/v2.5/user/feed它告訴你,你需要獲得你想閱讀的用戶的權限。你不能隨便閱讀隨機用戶的提要。 – CBroe

+0

我應該更精確一點:它不會在每一頁上都過時。一些文檔頁面編寫得很好,而其他文檔頁面缺乏明確的信息,鏈接,有時候,它們只是過時而不起作用,就像圖形api概述一樣。例如,雖然'feed'確實清楚地表明您需要用戶的許可,但從'post'頁面獲取該信息更加困難,尤其是對於像我這樣的新開發人員。這兩個頁面都沒有鏈接或陳述如何從用戶獲得該許可。 – Amai

+0

https://developers.facebook.com/docs/graph-api/reference/v2.5/post也很清楚需要什麼權限。至於如何請求權限 - 這裏介紹了,https://developers.facebook.com/docs/facebook-login/permissions/requesting-and-revoking – CBroe

回答

1

這裏這個鏈接已經說明了一切好看多了,很好的解釋:Embedding facebook feeds using asp.net mvc 如果它進入404在某些時候,下面的代碼:

public ActionResult GetMyFacebookPageFeeds() 
{ 
var NumberofFeeds = 3; 
string PageId = "YOUR_FACEBOOK_PAGE_NAME_HERE"; 
string AccessToken = "PLACE_YOUR_ACCESS_TOKEN_HERE"; 
FBPostsModel posts; 
string FeedRequestUrl = string.Concat("https://graph.facebook.com/" + PageId + "/posts?limit=", NumberofFeeds, "&access_token=", AccessToken); 
HttpWebRequest feedRequest = (HttpWebRequest)WebRequest.Create(FeedRequestUrl); 
feedRequest.Method = "GET"; 
feedRequest.Accept = "application/json"; 
feedRequest.ContentType = "application/json; charset=utf-8"; 
WebResponse feedResponse = (HttpWebResponse)feedRequest.GetResponse(); 
using (feedResponse) 
{ 
    using (var reader = new StreamReader(feedResponse.GetResponseStream())) 
    { 
     posts = JsonConvert.DeserializeObject<FBPostsModel>(reader.ReadToEnd()); 
    } 
} 
return View(posts); 
} 

至於FBPostsModel,你可以通過粘貼將完整的URL(包含要檢索的內容和有效的訪問令牌)導入瀏覽器,複製整個消息/頁面作爲結果,創建新類(名爲FBPostsModel),並使用粘貼JSON轉換的Visual Studio選項可在編輯 - >選擇性粘貼 - >將JSON粘貼爲類)。

至於嘗試訪問隨機臉書個人資料時的空數據結果 - 您需要該用戶的權限。憑藉您自己的訪問令牌,您只能查詢您的個人資料和fanpage。