0

您如何通过 Facebook Unity SDK 发布带有屏幕截图的自定义故事?

我做了什么:

遵循粉碎 Unity 教程。创建的配置文件对象。创造了动作粉碎。创建故事粉碎+个人资料。已保存。

1)它说无法生成故事。这是一个问题还是我仍然可以测试我的故事?

然后根据教程中的代码,我写道:

public void publishAction()
{
Debug.Log ("publish action.");
if (FB.IsLoggedIn)
{
Dictionary<string, string> querySmash = new Dictionary<string, string>();
string testUserID = "1378641979";
querySmash["profile"] = testUserID;
FB.API ("/me/" + FB.AppId + ":smash", Facebook.HttpMethod.POST, publishActionCallback, querySmash);
}
}

void publishActionCallback(FBResult result)
{
if (result.Error != null)
{
Debug.LogWarning("FacebookManager-publishActionCallback: error: " + result.Error );
}
else
{
Debug.Log("FacebookManager-publishActionCallback: success: " + result.Text );
}
}

2)此代码始终返回400 Bad Request。不知道为什么,因为它是教程示例的副本。任何想法?

下一步,我想在这个故事中附上游戏截图。我没有网站来托管它。我知道如何获取屏幕截图。

var width = Screen.width;
var height = Screen.height;
var tex = new Texture2D(width, height, TextureFormat.RGB24, false);
// Read screen contents into the texture
tex.ReadPixels(new Rect(0, 0, width, height), 0, 0);
tex.Apply();
byte[] screenshot = tex.EncodeToPNG();

3)问题是如何将它附加到我的自定义故事中?

4)在对如何给我的自定义故事一个自定义标题和消息进行一些研究之后,我仍然不清楚。请让我知道如何。

5)最后,如果我的对象是一个新词(不像配置文件那样预定义),我的 API 调用会是什么样子?假设自定义故事对象是“膳食”。

会是:querySmash["meal"] = "美味的披萨!"?

谢谢你的帮助!

4

1 回答 1

2

我将一次回答一个问题:

#1 - 2. 指定动作名称时,需要使用命名空间:*action* 而不是appid :action。要查看这是否是问题所在,请查看该 400 错误的正文是否显示为“无效路径组件”之类的内容。

#3。在您的操作配置中,创建一个类型为 的操作属性image。然后,无论该属性的名称是什么,都将其用作键并将图像字节用作 a 中的值,并将其作为参数WWWForm传递(有关详细信息,请参阅文档)。如果您创建了一个名为“screenpic”的属性,您的示例可能会继续类似FB.API()formData

var wwwForm = new WWWForm();
wwwForm.AddBinaryData("screenpic", screenshot, "temp.png");

FB.API("me/mynamespace:myaction", Facebook.HttpMethod.POST, Callback, wwwForm);

#4。您可以使用故事配置上的“编辑附件”按钮配置标题和消息,可能使用模板来包含作为对象标记的一部分或作为操作参数提供的字符串,如“创建自定义故事”文档中更完整的描述。

#5。几乎。如果您查看如何处理内置对象的情况,您会看到您提供的 URL 作为profile. 如果您在 Facebook 的 [Open Graph Debugger][4] 中加载该 URL,您将看到该 URL 处的网页已标记有 Open Graph 元数据。因此,类似地,在这种情况下,您需要使用适当的 Open Graph 标记创建一个网页,以定义新类型的对象(每个此类对象一个),并提供该对象的 URL 作为querySmash['meal"]在你的例子中。完整的纲要在Facebook 开发网站上的“使用对象”文档中。

于 2014-02-05T00:32:03.277 回答