就像使用GraphAPI或FQL Query或HTTP Post方法的Facebook帖子一样

时间:2013-02-27 07:56:40

标签: iphone ios facebook-graph-api facebook-fql

我想在Facebook上发帖,我有post_id,而且我无法找到FQL查询,因为喜欢IOS SDK中Facebook开发者页面的特定帖子。

从Facebook开发者页面,它说你可以喜欢使用HTTP POST方法的帖子,这意味着我们不能使用GraphAPI或fql.query来喜欢帖子。

任何人都可以在Facebook上分享HTTP POST网址。

此处有人在iOS中使用自定义按钮开发Facebook帖子的类似按钮功能。

提前致谢。

3 个答案:

答案 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}}参数来取消喜欢帖子时创建的通知。