【问题标题】:Facebook API receive Wall postsFacebook API 接收 Wall 帖子
【发布时间】:2013-10-04 17:05:06
【问题描述】:

目前我正在使用 Facebook API 和 ASP.Net (MVC4)。

是否可以在我的 Facebook Wall 上发布某条消息并在我的 Web 应用程序中接收该消息?

我已经尝试了下一个代码,但它不起作用:

也许有人有解决方案? (我也不想要新闻提要的帖子,而是我的个人资料墙)

JsonObject fbJsonFeedObj = (JsonObject)fbApp.Get(" https://graph.facebook.com/me/home?fields=from,message,name,picture&access_token=" + token);

string str = fbApp.Get("/me/feed").ToString();
JObject obj = JObject.Parse(str);
JToken jUser = obj["data"];
int numb = jUser.Count();

//Get latest post
int id_post = 0;
string stringMsg = obj["data"][id_post]["likes"].ToString();

更新: 我只想要一种方法来获取我个人 FB 墙的最新帖子。如何做到这一点?

更新 2: 今天我试过了:

JsonObject fbJsonFeedObj = (JsonObject)fbApp.Get(" https://graph.facebook.com/" + FacebookModel.TestFacebookID + "/feed?access_token=" + 令牌);

使用此代码,我可以获得最新的帖子,但是如何将其拆分为可读的字符串?所以我只得到发送帖子的 UserId 和真实的(字符串)消息?

更新 3: 目前我正在使用此代码获取墙贴:

  var wall = (JsonObject)fbApp.Get("/me/feed");

但 Visual Studio 显示此错误:

必须使用活动访问令牌来查询有关 当前用户。

我正在使用下一种方法接收accesstoken:

 public static string GetAccessToken()
        {
            var fb = new FacebookClient();
            dynamic result = fb.Get("oauth/access_token", new
            {
                client_id = FACEBOOK_APP_ID,
                client_secret = FACEBOOK_SECRET,
                grant_type = "client_credentials"
            });
            return result.access_token;
        }

如何解决这个问题?

【问题讨论】:

  • 您的obj 正确吗?
  • 应用程序正确接收到 obj。问题是 obj 包含最新的新闻提要,但不是我的 Facebook Wall 的最新帖子。我只想要一种方法来获取我个人 FB 墙的最新帖子。如何做到这一点?

标签: asp.net facebook facebook-graph-api facebook-c#-sdk


【解决方案1】:

最初的问题是您使用的是/home 而不是/feed

/home - 用户的新闻提要。
/feed - 用户的墙。

https://developers.facebook.com/docs/reference/api/user/

您可以按照与前一个 (/home) 对象相同的方式拆分它

//Get latest post
int id_post = 0;
string stringPostId = obj["data"][id_post]["id"].ToString(); //Id of the post
string stringPostSender = obj["data"][id_post]["from"]["name"].ToString(); //Name of sender
string stringPostSenderId = obj["data"][id_post]["from"]["id"].ToString(); //ID of sender

每个对象看起来都像这样,因此您应该能够弄清楚如何向下钻取

{
      "id": "5_11111111", 
      "to": {
        "data": [
          {
            "name": "User A", 
            "id": "4"
          }
        ]
      }, 
      "from": {
        "name": "User B", 
        "id": "5"
      }, 
      "message": "This is a test message", 
      "created_time": "2013-10-04T23:01:42+0000"
    }

您的最后一次更新是许多初次开发者常犯的错误。

应用程序访问令牌不应用于这些调用。您必须有一个登录流程才能通过 OAuth 授予 用户 访问令牌(以

开头)
https://www.facebook.com/dialog/oauth?
    client_id={app-id}
   &redirect_uri={redirect-uri}

请详细阅读https://developers.facebook.com/docs/facebook-login/login-flow-for-web-no-jssdk/了解流程说明。

【讨论】:

  • 谢谢!我有一个相关的问题来获取 Facebook Wall 帖子:请参阅第一篇帖子中的更新 3。
  • 不登录也能获取墙贴吗?或者我可以授予一次这样做的权限吗?
  • @Odrai 您可以使用页面或应用访问令牌(一旦发布,您将无需登录 developers.facebook.com/tools/access_token)发布任何其他需要用户访问令牌的内容。
  • 但是在第一篇文章(更新3)中,我无法使用应用访问令牌检查墙壁?我可以使用页面访问令牌执行此操作吗?
  • @Odrai 所有解决方案都需要至少完成一次登录流程。见Getting Your Facebook Page On Your Website With Access Tokens
猜你喜欢
  • 2014-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多