使用Facebook SDK .NET发布消息

时间:2014-05-11 09:07:47

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

我为我的网站创建了一个facebook页面和一个facebook应用程序,现在我需要在facebook SDK .NET的帮助下将消息发布到facebook页面。

这是我到目前为止所得到的:

public static bool UploadPost(string message)
    {
        dynamic result;

        //https://developers.facebook.com/tools/explorer/
        //https://developers.facebook.com/tools/access_token/
        FacebookClient client = new FacebookClient("secret access token");


        result = client.Get("oauth/access_token", new
            {
                client_id = "[Client ID number]",
                client_secret = "[Client sercret",
                grant_type = "client_credentials",
            });

        result = client.Post("[facebook app Id]/feed", new { message = "Test Message from app" });
        //result.id;
        result = client.Get("[facebook app Id]");

        return false;
    }

运行时,我在client.Post上获得:Additional information: (OAuthException - #200) (#200) The user hasn't authorized the application to perform this action。如果我删除了client.Post行,那么每个东西都能正常工作,那么就会获取正确的数据。

我试过关注一些helps on facebook SDK .NET网站,但它仍无效。

现在的主要问题是我获得了权限异常。我希望我的Facebook应用程序具有从我的网站发布帖子到Facebook页面的权限。

4 个答案:

答案 0 :(得分:3)

Here是向Facebook注册您的应用程序并为您的应用程序获取应用程序ID的逐步教程。

然后是权限::

    private const string ExtendedPermissions = "user_about_me,read_stream,publish_stream";

这是一串权限。进一步传递它以获得在页面上发布消息的正确权限。发布使用您的标准代码发布没有FB页面。 干杯。希望能帮助到你。

答案 1 :(得分:0)

您是否想发布到[facebook app id]?

我建议发帖到“我/喂”并测试是否有效。

此外,要发布到Facebook,您必须拥有publish_stream权限

private async Task Authenticate()
{
    string message = String.Empty;
    try
    {
        session = await App.FacebookSessionClient.LoginAsync("user_about_me,read_stream,publish_actions");
        App.AccessToken = session.AccessToken;
        App.FacebookId = session.FacebookId;

        Dispatcher.BeginInvoke(() => NavigationService.Navigate(new Uri("/Pages/LandingPage.xaml", UriKind.Relative)));
    }
    catch (InvalidOperationException e)
    {
        message = "Login failed! Exception details: " + e.Message;
        MessageBox.Show(message);
    }
}

应该工作:)

答案 2 :(得分:0)

以下情况应该有效。

var fb = new FacebookClient("access_token");

fb.PostCompleted += (o, e) => {
    if(e.Error == null) {
        var result = (IDictionary<string, object>)e.GetResultData();
        var newPostId = (string)result.id;
    }
};

var parameters = new Dictionary<string, object>();
parameters["message"] = "My first wall post using Facebook SDK for .NET";
fb.PostAsync("me/feed", parameters);

这是直接从the documentation

答案 3 :(得分:0)

通过创建扩展页面令牌并使用它来发布帖子一切正常。请参阅:How to get Page Access Token by code?

我很惊讶这个简单的任务很难开始运行,并且获得的帮助很小。