Facebook C# SDK 入门指南

8
我想编写一个控制台应用程序,每天早上自动在我的墙上发布信息。
我已经注册了Facebook开发者,并获得了AppID和App Secret。
我一直在尝试使用C# Facebook SDK,并查看了几个示例。
似乎这些示例都获取了用户令牌 - 但必须使用Windows表单中的浏览器。这是一个自动化过程 - 所以我不想有用户出现。
我也创建了一些使用应用程序令牌的示例 - 但似乎无法写入墙上。
我很快就写出了Twitter的等效物。我可能错过了什么吗?
正确的做法是什么?
看起来我只需要:
FaceBookClient(appID,appSecret) 然后只需 FaceBookClient.Put(message) 就可以了?
添加说明:
正在尝试使用C# Facebook sdk winform应用程序
我不得不更改他们的FacebookLoginDialog.cs,以使用以下URL:

https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=APPID&client_secret=APPSECRET&scope=user_about_me,publish_stream,offline_access

这个函数返回WebBrowser.DocumentText中的accesskey。

如果我调用:

            var fb = new FacebookClient(_accessToken);
            dynamic parameters = new ExpandoObject();
            parameters.message = "Hello World!";
            dynamic result = fb.Post("me/feed", parameters);

我遇到了异常:

(OAuthException) 必须使用活动访问令牌才能查询有关当前用户的信息。

如果我更改上面的代码,不使用该访问令牌,而是使用appID和Appsecret:

           FacebookClient myFacebookClient = new FacebookClient("APPID", "APPSECRET");
            dynamic parameters = new ExpandoObject();
            parameters.message = "Hello World!";
            dynamic result = myFacebookClient.Post("me/feed", parameters);

然后我收到了异常:

(OAuthException) 必须使用活动访问令牌来查询有关当前用户的信息。

我猜这是同样的异常。

2个回答

3

以下是我找到的内容。

http://facebooksdk.codeplex.com/下载Facebook C#SDK源代码和示例。

解压代码并将名为CS-WinForms的Facebook C#SDK示例加载到Visual Studio中。

在Form1.cs的顶部-输入您的应用程序ID。

运行该应用程序。

Form1.cs弹出一个名为“登录Facebook”的按钮。 点击该按钮。

FacebookLoginDialog.cs弹出带有浏览器窗口的对话框,其中显示了Facebook请求权限的内容。

FacebookLoginDialog.cs创建一个浏览器窗口,会去您的Facebook用户那里请求权限。 默认情况下,这些权限是:user_about_me,publish_stream,offline_access。

offline_access表示您获得的AccessToken永不过期

在Facebook上点击“确定”以允许应用程序访问您的Facebook数据。

FacebookLoginDialog.cs应该发现您已登录并获取了永不过期的访问令牌。

访问令牌是字符串。

插入一个断点,以便您可以复制此访问令牌。 保存此访问令牌,因为您可以从现在开始使用它来访问Facebook。

Facebook开发人员网站有一些工具可供您使用,以检查访问令牌https://developers.facebook.com/tools/debug/access_token。 您可以输入您的访问令牌并点击“调试”,它应该列出您的应用程序ID,用户ID,并且对于“过期时间”,它应该说“永不”。

一旦您拥有了此访问令牌-那么您只需编写以下代码即可:

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

发布信息至Facebook!


2
你好,我找不到你所说的示例,能否给我发送一个链接? - Z. Kiwan
1
大家好,自原帖发布以来已经很长时间了,有没有人有任何示例代码的有效链接?Wayback Machine 没有任何记录。 - samtrod

0

除了publish_stream之外,您还应请求offline_access权限。获取永不过期的令牌后,请将其存储在您的应用程序中。


从 Facebook SDK WinForm 示例应用程序中,我拥有 aboutme、publishstream 和 offlineaccess。 - Bubba
将您收到的用户访问令牌通过 https://developers.facebook.com/tools/debug 进行调试。 - DMCS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接