1

我想喜欢 Facebook 中的帖子,我有 post_id,但我无法从 IOS SDK 的 Facebook 开发人员页面中找到喜欢特定帖子的 FQL 查询。

在 Facebook 开发者页面上,它说您可以使用 HTTP POST 方法点赞帖子,这意味着我们不能使用 GraphAPI 或 fql.query 来点赞帖子。

任何人都可以分享 HTTP POST URL 来点赞 Facebook 中的帖子。

是否有人在这里使用 iOS 中的自定义按钮为 Facebook 帖子开发类似按钮功能。

提前致谢。

4

3 回答 3

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);           
                              }
                          }];
于 2013-02-27T13:04:10.907 回答
1

我看到您正在询问 HTTP POST URL 的字段(参数)。HTTP POST 请求(通常)不包含您在经典 GET 请求中传递参数时可能习惯使用的参数,例如某些 URL 中脚本名称后的?param1=value¶m2=value 。

POST 请求将数据发送到消息正文中的服务器,查看:http://en.wikipedia.org/wiki/POST_(HTTP)

既然你知道了,这就是你可以做的:

您可以通过经典的 GET 请求获取喜欢的数量,该请求可以粘贴到任何 Web 浏览器并获取响应的 URL,例如:

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/

Download the latest SDK which contains also the sample code, and follow the tutorial on Facebook web. Then when you get the basics configured, get back to the answer you got from Ivo.

于 2013-02-27T16:08:13.567 回答
0

您可以使用 Graph API 在 Facebook 帖子中发布点赞。正如这里的文档中所说:http: //developers.facebook.com/docs/reference/api/post/

要创建一个赞,您需要向具有权限的连接发出HTTP POST请求。您可以通过传递值为 的参数来禁止在喜欢 Post 时创建的通知。POST_ID/likespublish_streamnotifyfalse

于 2013-02-27T11:27:40.457 回答