我正在开发一款适用于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" />
答案 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参数,该参数会在用户点击时将用户带到网页。