问题描述
|
我正在开发一个Facebook asp.net C#应用程序
现在,应用程序将用户的access_token存储在数据库中,我也要写下我的到期时间和facebook id。
例如,当用户通过身份验证时,我在数据库中存储该用户的一条记录,其中包含他的access_token,expire = DateTime.UtcNow + 5分钟,以及他的facebook ID
现在,应用程序每1分钟运行一次后台线程。
线程检查每个用户是否过期则将其张贴在墙上
我知道facebook access_token大约在1小时后过期
现在我的问题是,有时是帖子,有时不是,
不稳定。
我把帖子做成一个循环,然后使用PostAsync。
代码:
for (int i = 0; i < records.Count; i++)
{
//init the facebookClient with valid access_token
Facebook.FacebookClient fbc = new Facebook.FacebookClient(records[i].token_data);
Dictionary<string,object> post = new Dictionary<string,object>();
post.Add(\"message\",\"my message\");
post.Add(\"link\",\"http://mylink/\");
post.Add(\"picture\",\"http://somepic.gif\");
post.Add(\"name\",\"my app name\");
post.Add(\"caption\",\"text text text\");
post.Add(\"description\",\"text text text\");
post.Add(\"actions\",\"{\\\"name\\\":\\\"Play Now!\\\",\\\"link\\\":\\\"http://my app page/\\\"}\");
//the punchline
fbc.PostAsync(records[i].facebook_id.ToString() + \"/Feed\",post);
}
现在冷运行50-100个循环
用我的测试为一些用户发布,有些则没有
而不是所有时间。
解决方法
如果我对您的理解正确,那么您每次都在向用户墙发送相同的消息吗?您的问题可能是Facebook。如果您的消息没有变化,Facebook倾向于忽略第二条消息(或者可能只是添加短语“ X类似帖子”)。
从Facebook的角度来看,您尝试做的事情听起来很“垃圾”(他们在做这类事情时非常苛刻)。如果您正在向用户的墙上写一条消息,那么您确实应该问用户是否可以这样做(不是您不必这样做,但是应该与用户一起完成\在您的应用上的活动。.例如发布游戏得分)。如果用户报告您正在垃圾邮件,Facebook将取消您的应用程序,因此您可能需要重新考虑您要做什么。
(我怀疑这是您想听到的答案,因此,我怀疑您会将我标记为答案,但是如果您的研究证实了我告诉您的内容,则最好将其标记为答案。至少由另一位读者投票赞成)。