我只是要直接潜入并给你一些关于我尝试做的事情、我尝试过的事情以及我前进道路上的障碍的背景知识。所以在这里..
我的目标
从桌面应用程序发布到 Facebook 个人资料或墙。
桌面应用程序将由拥有自己 facebook 帐户的个人用户使用。
目的是为每个用户创建他们自己的 Facebook 应用程序并获取应用程序 ID 和应用程序 secret 。
然后在桌面应用程序中使用应用程序 ID 和应用程序 secret (保存在数据库或配置中的某处)
允许桌面应用程序的用户发布到他们的个人资料,而无需先输入他们的电子邮件地址和密码来登录
因此,总而言之,每个 facebook 帐户 1 个 facebook 应用程序。
应用程序设置将保存在每个用户的桌面应用程序中
无需登录即可通过他们自己的 Facebook 应用发布到他们自己的 Facebook
这里的主要重点是用户不必通过窗口或浏览器手动登录。
我已经创建了我的 facebook 应用程序并将其设置为实时状态..我还在设置中添加了所有可能的权限和扩展权限(在 facebook 内),以确保我没有遗漏任何东西。
所以我确实有我的 AppID 和应用程序 secret 。我也有我的客户端 token ,它说用来代替“身份验证方法”的应用程序 secret 。我用它来获取我的访问 token 。我尝试了应用程序 secret ,但它没有返回访问 token
我的尝试:
C# FACEBOOK SDK
所以,我开始并仍在尝试使用 c# sdk
我可以检索我的访问 token ,但无法发布。
无论我尝试什么,我都会让他始终低于错误......这些只是我尝试过的许多代码示例中的两个。
(OAuthException - #2500) 必须使用事件访问 token 来查询有关当前用户的信息。dynamic r = fb.Post("me/feed", new { message = "My seconds wall post using Facebook C# SDK" });
(OAuthException - #190) 客户端 token 不能用于此 APIdynamic r = fb.Post("kevin.maguire.965/feed", new { message = "My second wall post using Facebook C# SDK" });
我从以下链接中阅读了以下摘录,其中指出我的访问 token 是一个应用程序 token ,我需要用户或页面的访问 token ?
Need Help on OAuthException Code 2500
错误 2500 表示您没有访问 token 或应用程序访问 token ,但正在尝试访问/me/- “me”是“当前用户或页面 ID”的占位符,因此如果没有用户的访问 token ,则无效页
因此,我尝试使用以下答案( Facebook C# SDK Get Current User )取回用户 ID
var fb = new FacebookClient("access_token");
dynamic result = fb.Get("me", new [] { fields = "id" });
var userId = result.id;
我得到了我认为是应用程序 token 而不是用户 token 的访问 token
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 实现上述目标,我可以在其中使用 secret 、 token 、ID 等......他们提供,我可以成功地从桌面应用程序发布到我的 Twitter 帐户,而无需登录我的 Twitter 帐户。
另一位用户也发现在 twitter 上发帖很容易,没有任何实际问题。 ( facebook c# sdk getting started )
他似乎也取得了成功,但我没有使用相同的代码 - 这段代码是在 2012 年 6 月使用的,因此自那以后可能会发布重大更改
然后。
我收到消息:(OAuthException - #2500) 必须使用事件访问 token 来查询有关当前用户的信息...当我使用 sdk 时。
当我尝试使用 Web 请求获取访问 token ,然后将该 token 传递给 sdk 对象以创建 facebookclient 时,我收到了此消息
(OAuthException - #190)无效的 OAuth 访问 token 签名。
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 和 secret 更改为虚拟值。
所以基本上伙计们......上面的链接和上面的代码只是我在过去几天里尝试过的一小部分......很容易......或者可能不是:)我不知道。
如果有人甚至有一个简单的 Windows 窗体,或者使用 c# sdk 或使用 restsharp 的 wpf 窗口应用程序示例,或者只是使用带有“POST”方法的 WebRequest 对象,那么我将永远伟大。
再次重申它是一个桌面应用程序而不是 ASP.net 。
非常感谢大家的关注和时间。
最佳答案
据我所知,您提供了不正确的访问 token 。由于您尚未提供有关获取访问 token 的代码,我建议您查看此 link它解释了如何构建 Facebook 应用程序,包括通过 WebBrowser 控件获取访问 token 。
编辑:您正在提供应用程序访问 token ,但正在尝试以用户身份发布。对于此操作,您需要一个用户访问 token ,您可以按照上面链接中的步骤获取该 token 。
关于c# - Facebook 与 C# 桌面应用程序的集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16443948/