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