【问题标题】:Facebook C# SDK - Post to wallFacebook C# SDK - 发布到墙上
【发布时间】:2011-11-07 07:56:47
【问题描述】:

我正在开发一个 asp.net MVC 3 Facebook 应用程序,我正在尝试将消息发布到我的墙上。这是我的代码:

FacebookWebClient client = new FacebookWebClient();

// Post to user's wall
var postparameters = new Dictionary<string, object>();
postparameters["message"] = "Hello world!";
postparameters["name"] = "This is a name";
postparameters["link"] = "http://thisisalink.com;
postparameters["description"] = "This is a description";

var result = client.Post("/me/feed", postparameters);

我可以使用 client.AccessToken 获取访问令牌,所以我假设我不必在任何地方设置它。这段代码不会产生任何错误,结果我得到了一个 ID。然而,当我打开我的 Facebook 时,我的墙上和我的新闻提要中什么都看不到。我不确定我错过了什么。我在 StackOverflow 上查看了相关问题,但没有看到与我类似的报告/问题。我还尝试根据我在其他帖子中看到的内容更改代码,但无济于事。我还检查了我的 Facebook 帐户设置,我看到我的应用程序被列出来允许发布到我的墙上。我还尝试通过 Graph API 资源管理器将消息发布到我的墙上,我得到了相同的结果。作为回报,我得到了一个 ID,但是当我查看我的 Facebook 帐户时,我什么也看不到。在这几天。任何帮助将不胜感激。

提前致谢。

[编辑] 我想知道我的应用程序生成的 access_token 是否有问题。使用这个 access_token,正如我在帖子中提到的,我使用 Graph API 资源管理器得到了相同的结果。返回了一个 ID,但我的墙上没有消息。但是,如果我允许 Graph API 浏览器发布到我的墙上并使用它自己生成的 access_token,我可以使用浏览器成功发布消息。这是FB登录按钮代码:

<div>
    <h1>Login using Facebook</h1>
    <p><fb:login-button perms="user_location, publish_stream, email"></fb:login-button></p>
</div>

【问题讨论】:

  • 您是否尝试过此链接底部提到的内容? facebooksdk.codeplex.com/discussions/250353
  • 嗨主要字节。感谢您的回复。我试过了,但不幸的是它没有用。
  • 你解决过这个问题吗?我遇到了同样的问题。

标签: c# asp.net-mvc facebook


【解决方案1】:

只需稍加改动,您的代码就可以正常工作。您必须像这样将用户身份验证令牌传递给构造函数...

var client = new FacebookClient(accessToken);

// Post to user's wall
var postparameters = new Dictionary<string, object>();
postparameters["message"] = "Hello world!";
postparameters["name"] = "This is a name";
postparameters["link"] = "http://thisisalink.com;
postparameters["description"] = "This is a description";

var result = client.Post("/me/feed", postparameters);

这个方法对我有用,虽然我不确定你使用的是哪个 facebook sdk。 我正在使用http://facebooksdk.net/,它非常好,所以如果你不使用它,我会推荐它

【讨论】:

    【解决方案2】:

    您是否在您的操作方法中向 Facebook 请求了正确的应用权限?

    试试:[CanvasAuthorize(Permissions = "user_location, publish_stream, email")]

    【讨论】:

      【解决方案3】:

      基本上你需要在你的帖子参数中添加一个额外的参数。

      args["access_token"] = account.access_token;
      

      这是特定页面的令牌。

      代码我就不重复了,以这里为例:Post On Facebook Page As Page Not As Admin User Using Facebook C# SDK

      (第二个答案)

      【讨论】:

        【解决方案4】:

        您是否将 access_token 附加到 URL 中?请参阅示例here。它还记录在 here 中(请参阅使用访问令牌)。

        /me/feed?access_token=<access_token>
        

        【讨论】:

        • 您好 TheCodeKing,感谢您的回复。不幸的是,它没有用。我什至尝试在没有 Facebook C# SDK 的情况下发布,但我看到了相同的行为。作为回报,我得到了一个 ID,但在我的墙上什么也没看到。然后让我更困惑的是,我使用 Graph API Explorer 使用我在我的应用程序中使用的相同访问令牌和相同的行为...ID 发布到我的墙上,但墙上什么都没有。然后,使用 Graph API Explorer 生成的访问令牌,我尝试发布完全相同的消息,但出现“重复消息”错误。但我的墙上仍然没有任何东西。
        • 应用需要用户的 stream_publish 权限。你检查过吗?还为 OAuth 2.0 更改了最近更改的访问令牌。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多