Facebook iOS SDK 3.0,在 url 上实现类似的操作?

Posted

技术标签:

【中文标题】Facebook iOS SDK 3.0,在 url 上实现类似的操作?【英文标题】:Facebook iOS SDK 3.0, implement like action on a url? 【发布时间】:2012-08-24 16:00:23 【问题描述】:

我正在尝试使用 Facebook ios SDK 3.0 通过 facebook open-graph-api 实现 Like。 除了 FbGraphObject 之外,一切似乎都可以工作,那是因为我不知道它应该是什么样子,因为这显然不起作用。

我想要做的是喜欢一个作为对象发布的 url。通过开放图进行简单的点赞。

我得到以下代码的错误信息是:

The action you're trying to publish is invalid because it does not specify any 
reference objects. At least one of the following properties must be specified: object.

我使用的代码是这样的:

    FBGraphObject *objectToLike = [[FBGraphObject alloc]initWithContentsOfURL:[NSURL URLWithString:facebookLike.titleLabel.text]];

    FBRequest *requestLike = [[FBRequest alloc]initForPostWithSession:[FBSession activeSession] graphpath:@"me/og.likes" graphObject:objectToLike];

    FBRequestConnection *connection = [[FBRequestConnection alloc] init];
    [connection addRequest:requestLike
         completionHandler:
     ^(FBRequestConnection *connection, id result, NSError *error) 
         if (!error &&
             result) 

             DLog(@"NothingWentWrong");
         

         DLog(@"MajorError: %@", error);

     
     ];

    [connection start];

更新:

检查了更多信息,我猜它使用此方法: https://developers.facebook.com/docs/sdk-reference/iossdk/3.0/class/FBGraphObject/#//api/name/graphObject

以某种方式创建一个对象。这是我可能需要使用的 graphObject 方法。任何帮助都将不胜感激。

【问题讨论】:

【参考方案1】:

我实际上已经设法为此创建了一个简单且相当肮脏的解决方案。 该解决方案似乎不是最佳解决方案,但目前是可行的解决方案。

如果有人在这个网址上使用过 facebook 上的资源管理器工具: https://developers.facebook.com/tools/explorer/

您知道当 facebook 分享一个赞时 URL 的样子。它必须具有 URL 和访问令牌。 所以我的解决方案变成了忽略从 Facebook SDK 发送任何内容,只向我在资源管理器工具中使用的相同 URL 发送发布请求。

如果你仔细观察的话,在 facebooks 文档中似乎有一些引用它,但没有人准确解释如何实际建立连接,所以这是我的解决方案:

NSString *urlToLikeFor = facebookLike.titleLabel.text;

NSString *theWholeUrl = [NSString stringWithFormat:@"https://graph.facebook.com/me/og.likes?object=%@&access_token=%@", urlToLikeFor, FBSession.activeSession.accessToken];
NSLog(@"TheWholeUrl: %@", theWholeUrl);

NSURL *facebookUrl = [NSURL URLWithString:theWholeUrl];

NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:facebookUrl];
[req setHTTPMethod:@"POST"];

NSURLResponse *response;
NSError *err;
NSData *responseData = [NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&err];
NSString *content = [NSString stringWithUTF8String:[responseData bytes]];

NSLog(@"responseData: %@", content);

如果您查看代码,我只是获取 url 并将两个动态字符串放入 url,一个带有 object-url,一个带有访问令牌。我创建了一个 URLRequest 并将其设置为 POST 请求,并且来自 facebook 的响应被记录下来,因此人们实际上可以查看类似是否通过。

可能会通过实际请求来完成一些性能改进,但如果您发现任何性能下降,我将由您自行决定。

我仍然对其他解决方案感兴趣,但这是我现在要使用的解决方案。

【讨论】:

你能告诉我什么是“urlToLikeFor”,它只是任何页面的'id'还是完整的url 要点赞的网页的完整网址,该网页必须实现facebook提供的元标记。 谢谢回复...你的意思是这样***.com/questions/9038025/… 是的......就像那样。仔细检查这些值很重要。并在 developer.facebook.com 上创建一个对象,这样你就可以喜欢这个网页了。 什么是 facebookLike.titleLabel.text?它应该是“facebook.com/samplepage”。还是其他?【参考方案2】:

我们目前不支持通过我们的 Graph API 点赞。 你可以看到的是这样的: https://developers.facebook.com/docs/opengraph/actions/builtin/likes/

【讨论】:

这就是我想要做的:P. 知道这个功能什么时候推出吗?这一定是最受欢迎的功能之一。【参考方案3】:

我不确定initWithContentsOfURL 是做什么的,但从名字上我猜它会尝试从给定的 URL(?)实际加载内容。

您只需将 URL 作为文本参数提供 - URL 代表 Open Graph 对象。 Facebook 将完成剩下的工作,抓取该 URL 后面的页面并读取其 OG 元标记等。

【讨论】:

通过url作为文本参数你是指字符串吗?你能给我一些指导吗? 是的,也不是(因为我不做任何 iPhone 开发工作)。 唯一的问题是 FBGraphObject 的实例似乎不以任何方式接受字符串。这里的问题是 FBGraphObject 在某种程度上是错误的,我不能让我的字符串成为一个对象。我很确定我错误地实现了 FBGraphObject。【参考方案4】:

也许只是这个?

    FBRequest *requestLike = [[FBRequest alloc]initForPostWithSession:[FBSession activeSession]
    graphPath:@"me/og.likes"
    graphObject:[NSURL URLWithString:facebookLike.titleLabel.text]];

【讨论】:

试过了,不知何故我必须实现协议 FBOpenGraphAction,但我仍然不太确定如何。 developers.facebook.com/docs/sdk-reference/iossdk/3.0/protocol/…

以上是关于Facebook iOS SDK 3.0,在 url 上实现类似的操作?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Facebook iOS SDK 3.0 中重现教程示例“Scrumptious”

在 iOS Facebook SDK 3.0 上作为粉丝页面发布

FBSession 的 Facebook iOS SDK 3.0 登录教程问题

iOS Facebook SDK 3.0 登录未重定向到原始应用程序

Facebook iOS SDK 3.0 中的深度链接和 FBSessionDelegate

Facebook iOS SDK 3.0,在 url 上实现类似的操作?