我们有一个定制的CMS,用户可以选择在发布消息时发布到公司的“粉丝页面”。此代码使用Facebook提供的FacebookAPI代码在C#应用程序(实际上是WCF Web服务)中使用Graph API。
我们之前发布了各种问题(请参阅this bug和this 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。
答案 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/'}
]
});
};