我想在Facebook上发帖,我有post_id,而且我无法找到FQL查询,因为喜欢IOS SDK中Facebook开发者页面的特定帖子。
从Facebook开发者页面,它说你可以喜欢使用HTTP POST方法的帖子,这意味着我们不能使用GraphAPI或fql.query来喜欢帖子。
任何人都可以在Facebook上分享HTTP POST网址。
此处有人在iOS中使用自定义按钮开发Facebook帖子的类似按钮功能。
提前致谢。
答案 0 :(得分:2)
如果您在iOS中使用Facebook SDK,这是一个示例:
[FBRequestConnection startWithGraphPath:[NSString stringWithFormat:@"%@/likes", post_id]
parameters:[NSDictionary dictionary]
HTTPMethod:@"POST"
completionHandler:^(FBRequestConnection *connection,
id result,
NSError *error)
{
if (error)
{
NSLog(@"Error: %@", [error localizedDescription]);
}
else
{
NSLog(@"Result: %@", result);
}
}];
答案 1 :(得分:1)
我看到你要求HTTP POST URL的字段(参数)。某些HTTP POST请求(通常)不包含您在经典GET请求中传递它们时可能习惯的参数,例如?param1 = value& param2 = value 之后的脚本名称URL。
POST请求将数据发送到邮件正文中的服务器,请查看:http://en.wikipedia.org/wiki/POST_(HTTP)
现在您知道了,这就是您可以做的事情:
您可以通过经典的GET请求获得喜欢的数量,您可以将其粘贴到任何网络浏览器并获取响应的网址,例如:
https://graph.facebook.com/260895413924000_605362559477282/likes?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
此网址会为所有喜欢该帖子/照片的人提供回复。
如果您知道帖子/照片是公开的,则可以省略?access_token = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(https://www.facebook.com/photo.php?fbid=605362542810617&set=a.260905783922963.82517.260895413924000)。 如果不是,您需要生成一个实际的access_token(也用于发布您需要生成一个)并进行测试,您可以在此处执行:https://developers.facebook.com/tools/explorer/
现在,如果你想真正喜欢这张照片,你不能简单地形成一个你可以在你的浏览器中复制/粘贴的URL,这将触发类似的动作。这是因为浏览器不执行POST请求,您需要通过代码 Ivo Patrick Tudor Weiss 建议或最终用于测试目的,您可以使用curl实用程序从控制台执行此操作:
curl --data "access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" https://graph.facebook.com/260895413924005362559477282/likes
你可以用HTTP DELETE撤消这样的东西......就像这样:
curl --data "access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -X DELETE https://graph.facebook.com/260895413924000_605362559477282/likes
- 更新,OP在评论中提出的其他问题:
当然可以使用ASIHTTPRequest来发出GET,POST和DELETE HTTP请求。但是,我不会建议您使用该库。一个原因是ASIHTTPRequest的作者已停止在图书馆工作,另一个原因是Facebook SDK for iOS是一个更好的选择,因为有了它,你还有很多其他事情需要你照顾。 这里说的就是例子:
首先根据您的需要输入这三种组合中的一种:
获取所有喜欢这篇文章的人:
(为简单起见,我在此处省略了access_token,但如果需要,您可以将其附加到URL)
NSURL *url = [NSURL URLWithString:@"https://graph.facebook.com/260895413924000_605362559477282/likes"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
喜欢自己的具体帖子:
NSURL *url = [NSURL URLWithString:@"https://graph.facebook.com/260895413924000_605362559477282/likes"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request appendPostData:[@"access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" dataUsingEncoding:NSUTF8StringEncoding]];
//[request setRequestMethod:@"POST"]; // <--- NOT NEEDED since it is the default if you previously called appendPostData
与帖子不同:
NSURL *url = [NSURL URLWithString:@"https://graph.facebook.com/260895413924000_605362559477282/likes"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request appendPostData:[@"access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" dataUsingEncoding:NSUTF8StringEncoding]];
[request buildPostBody];
[request setRequestMethod:@"DELETE"];
然后执行实际请求:
[request startSynchronous];
NSString *response = [request responseString];
NSLog(@"Response: %@", response);
请记住,同步请求可以进行测试,但如果您在实际应用中的主线程上使用它,那么您的GUI将无法响应。在此处了解如何执行异步请求:http://allseeing-i.com/ASIHTTPRequest/How-to-use
至于你的iOS示例。在这里编写所有代码太过分了。你已经得到了Ivo Patrick Tudor Weiss的答案,这是完全正确的。唯一缺少的是需要在Facebook上进行身份验证并建立FBSession的样板代码。
我建议你在这里查看这些资料:https://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/
下载最新的SDK,其中也包含示例代码,并按照Facebook网站上的教程进行操作。然后,当您完成基本配置后,请回到您从Ivo获得的答案。
答案 2 :(得分:0)
您可以使用Graph API向Facebook帖子发布类似内容。正如它在文档中所述: http://developers.facebook.com/docs/reference/api/post/
要创建类似内容,您需要使用HTTP POST
权限向POST_ID/likes
连接发出publish_stream
个请求。您可以通过传递值为notify
的{{1}}参数来取消喜欢帖子时创建的通知。