4

我正在尝试发布到 facebook 页面,因为页面和我遇到了问题。

当我运行它时,我得到:

Facebook.FacebookOAuthException: (OAuthException - #200) (#200) 用户没有足够的管理权限来执行此页面上的此操作

我相信我需要一个用户访问令牌而不是应用程序访问令牌。在线示例显示了用“代码”交换令牌。我目前无法检索此“代码”。

对于如此简单的任务,这个过程似乎非常复杂。我在这里错过了什么吗?

我需要用户访问令牌吗?假设此代码位于 Windows 服务中并且无法提示用户,我如何获取此令牌。

const string applicationId = "114810611889734";
const string applicationSecret = "*** SECRET ***";
const string pageId = "102661313114041";

var client = new FacebookClient();

dynamic token = client.Get("oauth/access_token", new
{
    client_id = applicationId,
    client_secret = applicationSecret,
    grant_type = "client_credentials"
});

client.AccessToken = token.access_token;

dynamic parameters = new ExpandoObject();
parameters.title = "test title";
parameters.message = "test message";

var result = client.Post(pageId + "/feed", parameters);
4

1 回答 1

5

好的,我终于可以在我的 Facebook 页面上发帖了,但现在我需要一个用户才能这样做。这些是我采取的步骤...

首先,我需要创建一个新的 Facebook 帐户,用于发布到此页面。

接下来,我转到主页的管理员角色部分,并将此用户添加为经理。

我从这个 URL 获得了这个用户的访问令牌:

https://www.facebook.com/dialog/oauth?client_id=APPLICATION_ID&redirect_uri=https://www.facebook.com/connect/login_success.html&response_type=code+token&display=popup&scope=manage_pages

重定向之后,URL 应该包含一个不会过期的 access_token。(expires_in=0 应该在 URL 中。)

为了确认这一点,我去了https://developers.facebook.com/tools/debug/access_token的访问令牌调试器,输入我的访问令牌并点击调试。

最后,我对代码进行了一些更改,以使用我的访问令牌而不是应用程序 ID 和应用程序密码。

const string accessToken = "MY_ACCESS_TOKEN";
const string pageId = "MY_PAGE_ID";

var client = new FacebookClient(accessToken);

dynamic parameters = new ExpandoObject();
parameters.title = "test title";
parameters.message = "test message";

var result = client.Post(pageId + "/feed", parameters);

这个访问令牌现在被硬编码到我的应用程序的配置文件中。

于 2013-01-07T05:14:52.193 回答