2013-01-06 21 views
4

我试图发布到Facebook页面,因为页面和我遇到问题。如何使用FacebookClient发布到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); 
+0

在向oauth/access_token发送获取请求时,您应该将“publish_stream”权限设置为“范围”参数值 – prthrokz

+0

我向令牌添加了scope =“offline_access,publish_stream,manage_pages”,但我仍然收到相同的权限错误。 – joelnet

回答

5

好的,我终于能够发布到我的Facebook页面,但现在我需要一个用户来这样做。这些是我采取的步骤...

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

接下来,我转到了我的页面的Admin Roles部分,并将此用户添加为Manager。

我有一个访问令牌从这个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中。)

为了证实这一点,我去了Access令牌调试器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); 

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

+0

嗨,参数是什么?我的意思是什么与发布到Facebook墙上的帖子相匹配?有没有任何文件? – Mani