ASP.NET MVC - 将数据发布到 Facebook

Posted

技术标签:

【中文标题】ASP.NET MVC - 将数据发布到 Facebook【英文标题】:ASP.NET MVC - Post data to Facebook 【发布时间】:2016-04-24 02:53:26 【问题描述】:

在asp.net mvc5中使用graph api获取访问令牌后,我尝试将数据发布到facebook,但在获取访问令牌后丢失了要发布的数据。

这是我在视图中所做的事情

 <a href='@Url.Action("PostFacebook", "SocialMedia")/?videoId=@Model.VideoSourceId'>
     <img src='@Url.Content("~/Assests/layout/images/social/share-facebook.png")'  style="height:28px" />
 </a>

这是我在社交媒体控制器的 PostFacebook 操作中的内容。

 public void PostFacebook(int? videoId)
 
     string redirectUrl = Request.Url.GetLeftPart(UriPartial.Path);
     if (Request["code"] == null)
     
        string url = string.Format(
        "https://graph.facebook.com/oauth/authorize?client_id=0&redirect_uri=1&scope=2",
        FbClientId, redirectUrl, scope);
        Response.Redirect(url);
     
     else
     
         redirectUrl = string.Format("0?code=1", redirectUrl, Request["code"]);
         string accessToken = GetAccessToken(redirectUrl);
         FacebookClient facebook = new FacebookClient(accessToken);

         //get data about video here and set parameters
         //MY PROBLEM LIES HERE, VideoId is null always so i can't get the values about my post from my database.
         facebook.Post("/me/feed", parameters);
     
 

我明白为什么在我第二次调用时它为空,因为当我们重定向到 oauth/authorize?.. 我们退出该方法并丢失所有信息,当 facebook 将代码返回给我们的 redirect_url 时,我们不能取回 VideoId。

我配置的 redirect_url 是 SocialMedia/PostFacebook/

我很困惑如何将 videoId 发送到 Facebook oauth/authorize 端点并使用 CODE 或什至可能将其取回?如果没有,在这种情况下我必须使用哪些技术来持久化我的参数?

【问题讨论】:

【参考方案1】:

我通过更改以下内容使其工作。

1) 我的 redirect_uri 是 http://localhost:53923/SocialMedia/Facebook/ 我把它改成了http://localhost:53923/SocialMedia/Facebook/?videoId,这对我来说很奇怪。 Facebook 现在自己插入 videoId。

2) 其次,我刚刚在

的代码中更新了我的重定向 uri

string redirectUrl = Request.Url.GetLeftPart(UriPartial.Path);

string redirectUrl = Request.Url.AbsoluteUri.

成功了!

【讨论】:

以上是关于ASP.NET MVC - 将数据发布到 Facebook的主要内容,如果未能解决你的问题,请参考以下文章

如何将 ASP.NET Identity 实现到一个空的 MVC 项目

将 asp.net Mvc 从 3 降级到 2

如何将数据从表示层传递到业​​务逻辑层? (ASP.NET MVC 5)

从 ASP.NET MVC 迁移到 ASP.NET Core MVC

将大型 JSON 对象发布到 ASP.NET MVC

单击日历时将数据加载到 PartialView (ASP.NET MVC)