You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用ASP.NET MVC 5读取Facebook Page帖子并展示到网页?

获取Facebook Page动态Feed的ASP.NET MVC 5实现步骤

前置准备

  • 登录Facebook开发者平台创建应用,获取App ID和App Secret
  • 为应用添加pages_show_list和pages_read_engagement权限(这两个是当前API读取Page动态的核心权限)
  • 生成长期访问令牌:用App ID、App Secret和短期令牌换取有效期60天的长期令牌,避免短期令牌快速失效

核心实现代码

1. 模型类(解析API返回数据)

在项目的Models文件夹下新建FacebookPost.cs:

public class FacebookPost
{
    public string Id { get; set; }
    public string Message { get; set; }
    public string CreatedTime { get; set; }
    public FacebookAttachment Attachment { get; set; }
}

public class FacebookAttachment
{
    public string MediaType { get; set; }
    public FacebookMedia Media { get; set; }
}

public class FacebookMedia
{
    [JsonProperty("image")]
    public FacebookImage Image { get; set; }
}

public class FacebookImage
{
    [JsonProperty("src")]
    public string ImageUrl { get; set; }
}

public class FacebookFeedResponse
{
    public List<FacebookPost> Data { get; set; }
}

2. 控制器调用逻辑

在任意控制器(如HomeController)中添加异步方法:

using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using Newtonsoft.Json;

public class HomeController : Controller
{
    // 替换为你的Page ID和长期访问令牌
    private readonly string _pageId = "你的Page ID";
    private readonly string _accessToken = "你的长期访问令牌";

    public async Task<ActionResult> LatestFacebookPosts()
    {
        var apiUrl = $"https://graph.facebook.com/v18.0/{_pageId}/feed?fields=id,message,created_time,attachment&limit=5&access_token={_accessToken}";

        using (var httpClient = new HttpClient())
        {
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            var response = await httpClient.GetAsync(apiUrl);
            
            if (response.IsSuccessStatusCode)
            {
                var jsonContent = await response.Content.ReadAsStringAsync();
                var feedData = JsonConvert.DeserializeObject<FacebookFeedResponse>(jsonContent);
                
                return View(feedData.Data);
            }
            else
            {
                // 接口调用失败时返回空列表
                return View(new List<FacebookPost>());
            }
        }
    }
}

3. 视图展示(LatestFacebookPosts.cshtml)

@model List<FacebookPost>

<h3>最新Facebook动态</h3>
@foreach (var post in Model)
{
    <div class="post-container" style="margin-bottom: 20px; padding-bottom: 10px; border-bottom: 1px solid #eee;">
        <p><strong>发布时间:</strong>@DateTime.Parse(post.CreatedTime).ToLocalTime().ToString("yyyy-MM-dd HH:mm")</p>
        @if (!string.IsNullOrWhiteSpace(post.Message))
        {
            <p>@post.Message</p>
        }
        @if (post.Attachment != null && post.Attachment.Media?.Image != null)
        {
            <img src="@post.Attachment.Media.Image.ImageUrl" alt="帖子配图" style="max-width: 450px; border-radius: 4px;" />
        }
    </div>
}

关键注意事项

  • 务必使用最新版本的Graph API(当前稳定版为v18.0),旧版本接口可能已被废弃
  • 长期访问令牌需每60天刷新一次,可通过API自动完成刷新流程
  • 若用于公开访问的网站,需完成Facebook应用的权限审核,确保权限合规

内容的提问来源于stack exchange,提问作者user153923

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 12:45:43