Facebook与C#桌面应用程序的集成

即时通讯只是直接介入,给你一些关于我试图做什么,试过了什么,以及我的方式的障碍的背景知识。 所以在这里..

我的目标
从桌面应用程序发布到Facebook个人资料或墙上。
桌面应用程序将由拥有自己的Facebook帐户的个人用户使用。
目标是为每个用户创建他们自己的Facebook应用程序,并获取应用程序ID和应用程序秘密。
然后在桌面应用程序中使用应用程序ID和应用程序密码(保存在数据库或配置中的某个位置),以允许桌面应用程序的用户发布到他们的个人资料,而不必输入他们的电子邮件地址和密码以便先登录

所以总之,每个Facebook帐户1个Facebook应用程序。
应用程序设置将保存在每个用户桌面应用程序中通过自己的Facebook应用程序发布到他们自己的Facebook,而无需登录

这里主要强调的是用户不必通过窗口或浏览器手动登录。

我已经创建了我的Facebook应用程序,并将其设置为实时状态..我还在设置(在Facebook内)中添加了所有可能的权限和扩展权限,以确保我没有丢失任何内容。 所以我有我的AppID和应用程序的秘密..我也有我的客户端令牌,它说,用来代替'auth方法'的应用程序秘密。 我用它来获取我的访问令牌。 我尝试了应用程序的秘密,它不返回访问令牌

我的尝试:

C#FACEBOOK SDK所以,我开始使用并仍在尝试使用c#sdk
我可以检索我的访问令牌,但无法发布。

无论我尝试什么,我总能得到他下面的错误...这些只是我尝试过的许多代码示例中的2个。
(OAuthException - #2500)必须使用活动访问令牌来查询有关当前用户的信息。

dynamic r = fb.Post("me/feed", new { message = "My seconds wall post using Facebook C# SDK" });

(OAuthException - #190)客户端令牌不能用于此API

dynamic r = fb.Post("kevin.maguire.965/feed", new { message = "My second wall post using Facebook C# SDK" });

我从下面的链接中读取了以下摘录,其中说明了我的访问令牌是应用令牌,并且我需要访问令牌给用户或页面? 需要关于OAuthException的帮助代码2500错误2500意味着您没有访问令牌或应用程序访问令牌,但正尝试访问/ me / - '我'是'当前用户或页面ID'的占位符,因此如果没有访问用户或页面的令牌

所以,我试图使用以下答案获取用户标识(Facebook C#SDK获取当前用户)

var fb = new FacebookClient("access_token");
dynamic result = fb.Get("me", new [] { fields = "id" });
var userId = result.id;

我得到的访问令牌,我认为是应用程序令牌,而不是用户令牌

dynamic result = fb.Get("oauth/access_token", new
        {
            client_id = this.ApplicationId,
            client_secret = this.AppSecret,
            grant_type = "client_credentials"
        });

fb.AccessToken = result.access_token;

所以我现在不知道如何发布到我的个人资料

我能够实现上述使用Twitter的地方,我可以使用秘密,令牌,ID等......他们提供,我可以成功地发布到我的Twitter帐户从桌面应用程序没有登录到我的Twitter帐户。

另一位用户也发现,发布到twitter没有任何实际问题是很容易的。 (facebook c#sdk入门)

他似乎也取得了成功,我没有使用相同的代码 - 该代码在2012年6月使用,因此可能会发生突破性更改。
我得到了以下消息:(OAuthException - #2500)当我使用sdk时,必须使用活动访问令牌来查询有关当前用户的信息。 当我尝试使用Web请求获取访问令牌,然后将该令牌传递给sdk对象以创建一个facebookclient时,我收到了此消息(OAuthException - #190)无效的OAuth访问令牌签名。

    WebRequest request = WebRequest.Create("https://graph.facebook.com/oauth/access_token?      grant_type=client_credentials&client_id=999999999999999&client_secret=edefefr8e09r8e08r080r8er0e");

        request.Method = "POST";

        // Set the ContentType property of the WebRequest.
        request.ContentType = "application/x-www-form-urlencoded";

        // Get the request stream.
        Stream dataStream = request.GetRequestStream();

        // Close the Stream object.
        dataStream.Close();

        // Get the response.
        WebResponse response = request.GetResponse();
        dataStream = response.GetResponseStream();

        // Open the stream using a StreamReader for easy access.
        StreamReader reader = new StreamReader(dataStream);

        // Read the content.
        string accesstoken = reader.ReadToEnd();
        MessageBox.Show("accesstoken") 

        // Clean up the streams.
        reader.Close();
        dataStream.Close();
        response.Close();

        var fb = new FacebookClient(accesstoken);
        dynamic parameters = new ExpandoObject();
        parameters.message = "test";
        dynamic result = fb.Post("me/feed", parameters);
        var id = result.id;

很明显,在上面的代码中,我将id和秘密更改为虚拟值。

所以基本上人...上面的链接和上面的代码只是我在过去几天试图约会的一小撮......我基本上用尽了选项,并在这里错过了一些可能避免我的注意力的东西轻松..或者也许不:)我不知道。

如果任何人甚至会有一个简单的Windows窗体,或者使用c#sdk的wpf窗口应用程序示例,或者使用restsharp,或者只是使用带'POST'方法的WebRequest对象,那么我将永远是伟大的。

只是再次重申它是一个桌面应用程序,而不是ASP.net。

非常感谢您的关注和时间。

在这里输入图像描述

在这里输入图像描述

在这里输入图像描述

在这里输入图像描述


从我能看到你提供一个不正确的访问令牌。 既然你没有提供关于获取访问令牌的代码,我可以建议你看看这个链接,它解释了如何构建一个Facebook应用程序,包括通过WebBrowser控件获取访问令牌。

编辑:您正在提供应用程序访问令牌,但正在尝试作为用户发布。 对于此操作,您需要一个用户访问令牌,您可以按照上述链接中的步骤获取该令牌。

链接地址: http://www.djcxy.com/p/13349.html

上一篇: Facebook integration with C# desktop application

下一篇: Reflectively checking whether a object is a valid generic argument to a method