【发布时间】:2011-08-10 03:42:04
【问题描述】:
我正在尝试使用 Facebook C# SDK 将帖子发布到公司页面的墙上。 我需要从批处理作业中执行此操作,因此这不是任何特定用户正在与之交互的 Web 应用程序。 我在我自己的 Facebook ID 下设置了一个 Facebook 应用程序,并且我已在我的帐户下授予它 publish_stream、share_item、offline_access 和 manage_pages 权限。 (我可以在我的 Facebook 设置页面下验证这些权限是否已授予该应用程序。)我尝试发布到的公司页面是我自己创建的页面,因此我应该拥有对它的完全访问权限。
我正在使用此应用程序的应用程序 ID 和密码向 Facebook 进行身份验证,获取访问令牌,整理要发布的消息,然后尝试发布它。我得到以下异常:
Facebook.FacebookOAuthException was unhandled by user code
Message=(OAuthException) (#200) The user hasn't authorized the application to perform this action
我尝试了一些关于主题的变体,但我似乎无法弄清楚我做错了什么。 这是我的一些代码:
var client = new FacebookClient("APP ID", "SECRET");
_log.DebugFormat("access token={0}", client.AccessToken);
dynamic parameters = new ExpandoObject();
parameters.message = "testing 123";
/* fill in other parameters */
dynamic result = client.Post(FanPageId+"/feed", parameters);
/* here's where I get the exception */
我看到了从 /me/accounts 返回的数据中提取特定于页面的访问令牌的引用,但我不知道如何从作为 Facebook 应用程序进行身份验证的离线应用程序执行此操作,而不是作为 Facebook 用户。
更新:我已经使用这段代码连接到 Facebook:
var client = new FacebookClient("NON-EXPIRING OAUTH TOKEN");
...其中“未过期的 oauth 令牌”是 Facebook 上的开发者应用程序中针对相关应用程序显示的那个。
不过,这仍然是在我自己的 ID 下发布的,所以现在我需要采取额外的步骤来弄清楚如何让帖子看起来来自页面本身。
【问题讨论】:
-
很可能你必须先征得自己的 manage_pages 权限,然后你才能在页面上做一些事情。
标签: facebook-graph-api facebook-c#-sdk