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

Kev*_*Kev 7 .net c# wpf facebook

我只是直接潜入并给你一些背景,我想尝试做什么,我尝试过什么,以及我的方式遇到的障碍.所以这里..

我的目标
从桌面应用程序发布到Facebook个人资料或墙壁.
桌面应用程序将由拥有自己的Facebook帐户的个人用户使用.
目的是为每个用户创建自己的Facebook应用程序,并获取应用程序ID和应用程序密码.
然后在桌面应用程序中使用app id和app secret(在数据库或配置中保存)允许桌面应用程序的用户发布到他们的个人资料,而无需输入他们的电子邮件地址和密码来登录

总而言之,每个Facebook帐户1个facebook应用程序.
应用程序设置将保存在每个用户桌面应用程序中,无需登录即可通过自己的Facebook应用程序发布到自己的Facebook

这里的主要重点是用户不必通过窗口或浏览器手动登录.

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

我的尝试:

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

无论我尝试什么,我总是低于错误......这些只是我尝试过的众多代码示例中的两个.
(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"的占位符,因此如果没有用户或页面的访问令牌

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

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

我得到了访问令牌,我假设它是应用程序令牌而不是用户令牌

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;
Run Code Online (Sandbox Code Playgroud)

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

我可以使用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;
Run Code Online (Sandbox Code Playgroud)

显然,在上面的代码中,我将id和secret更改为虚拟值.

所以基本上人们...上面的链接和上面的代码只是我在过去几天里尝试过的一小部分......我基本上已经用尽了选项,我在这里遗漏了一些可以避免我的注意力容易..或者可能不是:)我不知道.

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

只是再次迭代它是桌面应用程序而不是ASP.net.

非常感谢大家的关注和时间.

在此输入图像描述

在此输入图像描述

在此输入图像描述

在此输入图像描述

Jur*_*eri 3

据我所知,您提供了不正确的访问令牌。由于您尚未提供有关获取访问令牌的代码,我建议您查看此链接,其中解释了如何构建 Facebook 应用程序,包括通过 WebBrowser 控件获取访问令牌。

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


归档时间:

查看次数:

13500 次

最近记录:

12 年,2 月 前