通过iPhone SDK创建FB Open Graph对象

时间:2012-03-04 23:09:54

标签: ios facebook opengraph facebook-ios-sdk facebook-timeline

我正在开发一款适用于iPhone的音乐播放器,我希望用户能够将歌曲发布到他们的时间轴上。我有Facebook Connect工作,我已经注册了Open Graph对象和Facebook的动作,但我无法弄清楚如何从iOS创建/发布对象和动作。

Facebook给了我以下代码,但我不知道将它用于iOS SDK。

<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# MYAPPNAME: http://ogp.me/ns/fb/MYAPPNAME#">
<meta property="fb:app_id"      content="xxxxxxxxxxxxxxx" /> 
<meta property="og:type"        content="MYAPPNAME:song" /> 
<meta property="og:url"         content="Put Your Own URL Here" /> 
<meta property="og:title"       content="Some Arbitrary String" /> 
<meta property="og:description" content="Some Arbitrary String" /> 
<meta property="og:image"       content="http://ogp.me/logo.png" /> 

4 个答案:

答案 0 :(得分:3)

您不从iOS SDK发布对象 - 您通过SDK发布操作并引用对象的URL。

你做类似的事情:

[[delegate facebook] requestWithGraphPath:@"me/YOUR_APP_NAMESPACE:YOUR_ACTION_NAME" andParams:[@"YOUR_OBJECT_URL" forKey:@"recipe"] andHttpMethod:@"POST" andDelegate:self];

实际上,您使用标准的iOS Graph API方法POST到Graph API。

这是一个示例应用,它向您展示了如何执行此操作:https://github.com/facebook/wishlist-mobile-sample

答案 1 :(得分:0)

据我了解(我希望我/希望我错了),你不能直接从iOS 5.x本机应用程序发布到Facebook的OpenGraph 。您需要更复杂的技术堆栈。

Simon Cross和Nick解释的是,您需要一台Web服务器来接收您的iOS操作,然后您的Web服务器就会与Facebook通信。更重要的是,您的网络服务器(我相信)必须实际托管您的对象 - 例如你的案例中的图片或歌曲 - 尽管有很好的文件托管服务可以与iOS进行良好的互动(我一直在挖掘Parse.com),但它们并没有为Facebook的OpenGraph提供原生/ GUI驱动的服务。 (我希望Heroku或Parse或其他人提供的东西可以工作并开箱即用......)

所以,基本上,你必须推出自己的网络服务器,使用OpenGraph从原生应用发布到FB。

注意:在iOS 6中,看起来FB集成与iOS 5中的Twitter集成一样简单(即您将在30分钟内启动并运行)。我将在下周搞乱它,看看是否是这种情况。 :)

答案 2 :(得分:0)

就像Simon说的那样,你不发布'OG Objects',你创建/注册它们(以及FB应用程序仪表板中的'Actions')。然后从您的应用程序中使用Facebook Object API发布“Actions”。您的“操作”应包含对您创建的自定义OG对象实例的引用(通过URL)。此自定义OG对象将具有唯一数据(例如标题,数据等)。

这是踢球者,那些'自定义'OG对象必须作为一个独特的网页驻留在后端服务器上。糟透了!!!因此,您需要提供后端服务器代码以帮助您为动态生成的网页(OG对象)提供服务,或者您需要为您提供服务(BaaS - 后端即服务)。

虽然,FB说'Parse'会处理这个并且他们是合作伙伴,但我找不到任何关于Parse.com的信息来做这件事....事实上,我找到了支持建议恰恰相反。 Parse似乎非常适合用户管理和应用程序的云数据存储。但是,我建议使用“Kinvey”,因为它们支持OG对象创建和存储(轻量级流量免费),并且易于设置和集成。

答案 3 :(得分:0)

您不能直接发布歌曲,您需要在自己的服务器(或社交网络,如Soundcloud)上托管歌曲,然后post将这些对象发布到Facebook。尽管SDK中最近的更改使用:

,您可以动态创建对象
NSMutableDictionary<FBOpenGraphObject> *object =
            [FBGraphObject openGraphObjectForPostWithType:@"yourns:yourtype"
                                                    title:title
                                                    image:imageDataIfAny
                                                      url:@"a URL that can be clicked"
                                              description:descriptionIfAny];
            //attach custom data
            object[@"data"] = @{
                               //any custom data of your object type comes here
                                };

您不再需要将OG标记明确地添加到网页中,但您仍需要一个URL参数,该参数会在用户点击时将用户带到网页。