通过应用程序发布指向粉丝页面的链接

时间:2011-09-01 13:26:23

标签: c# asp.net facebook facebook-graph-api

我们有一个定制的CMS,用户可以选择在发布消息时发布到公司的“粉丝页面”。此代码使用Facebook提供的FacebookAPI代码在C#应用程序(实际上是WCF Web服务)中使用Graph API。

我们之前发布了各种问题(请参阅this bugthis discussion)。这已经工作了一段时间,但现在返回400 /错误请求。

我尝试了两种不同的(之前已知的工作)api令牌。此设置上几个月没有代码发生变化。

我想知道如何弄清楚为什么它现在不再发布了。它要求的令牌有什么变化吗?

这是我正在使用的代码:

FacebookAPI api = new FacebookAPI(token);

Dictionary<string, string> postArgs = new Dictionary<string, string>();

postArgs["link"] = url;
postArgs["message"] = message;

try
{
    JSONObject jsonresult = api.Post("me/links", postArgs);
    result = "ok";
}
catch (Exception e)
{
    result = "Post Failed - " + e.Message.ToString();
}

我的例外是陈述400 /错误请求

更新:我还注意到,根据Authentication Docs,有些令牌现在已经到期了,我的似乎没有。这可能是个问题吗?例如,我的令牌是一个~100字符串,其中4个部分由3个管道(|)分隔。然后他们的例子有一个额外的&amp; expires_in = 64090。

1 个答案:

答案 0 :(得分:0)

要发布链接或状态,您需要用户access_token和链接权限。确保用户已经给应用程序做了链接帖子有publish_stream perms。还应该在帖子上忽略message参数,但我不会预先填充它以避免错误。

  

您可以通过发出HTTP POST代表用户发布链接   使用publish_stream权限请求PROFILE_ID / feed   以下参数。

http://developers.facebook.com/docs/reference/api/user/#links

我用来发帖的javascript示例。

window.feedthis = function(shf,point,clk) {
     ptsT=point-shf+clk;
             FB.ui({ method: 'feed', 
           // message: 'Testing Feed',
            caption: 'I survived '+shf+' Levels in Another Grid. I earned '+point+' points with '+clk+' clicks.',
            name: 'Another Grid',
            link: 'http://apps.facebook.com/anothergrid/?ref=link',
            //to: '391793380398',
            description: 'Another Grid, A color elemination Puzzle game by Shawn E Carter.',
            picture: 'https://shawnsspace.com/ShawnsSpace.toon.nocolor..png',
            properties: [{ text: 'Play the Game', href: 'http://apps.facebook.com/anothergrid/?ref=achievement'}
                            //{ text: 'ShawnsSpace', href: 'http://apps.facebook.com/shawnsspace/?ref=anothergrid'}
                            ],
            actions: [
            { name: 'Another Grid', link: 'http://apps.facebook.com/anothergrid/'}
            ]       
            });
            };