2014-02-02 3 views
0

Как вы можете опубликовать пользовательскую историю через SDK Facebook Unity с прикрепленным скриншотом?Использование Facebook Unity SDK, как опубликовать пользовательскую историю с скриншотом на iOS

Что я сделал:

Круги разбивают единства учебник. Создано profile объект. Созданный action smash. Создано история smash + профиль. Сохраненный.

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"] = "Вкусная пицца!"?

Благодарим за помощь!

ответ

2

Я возьму эти вопросы, в то время:

# 1 - 2. При указании имени действия, вам нужно использовать пространство имен: * действие *, а не APPID: действие. Чтобы убедиться, что это проблема, посмотрите, читает ли тело этой ошибки 400 что-то вроде «недопустимых компонентов пути».

# 3. В своей конфигурации действий создайте свойство действия, тип которого равен image. Тогда, каково бы ни было имя этого свойства, используйте это как ключ и ваше изображение байты как значение в WWWForm, которое вы передаете в FB.API() как его аргумент formData (подробности см. В разделе docs). Если вы создали свойство «screenpic», ваш пример может продолжить что-то вроде

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

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

# 4.Вы настраиваете заголовок и сообщение с помощью кнопки «Редактировать вложения» в конфигурации «История», возможно, используя шаблоны для включения строк, предоставляемых либо как часть разметки объекта, либо как параметры действия, как описано более подробно в документах "Creating Custom Stories".

# 5. Почти. Если вы посмотрите, как вы обрабатывали случай с встроенным объектом, вы увидите, что вы указали URL-адрес как значение profile. Если вы загрузите этот URL в [Open Graph Debugger] в Facebook [4], вы увидите, что веб-страница с этим URL-адресом была отмечена метаданными Open Graph. Таким образом, в этом случае вам нужно создать веб-страницу с соответствующей разметкой Open Graph для определения объекта вашего нового типа (по одному для каждого такого объекта) и указать URL-адрес этого объекта в качестве значения querySmash['meal"] в вашем примере. Полное изложение находится в документе "Using Objects" на веб-сайте Facebook.

+0

Привет, Колин, спасибо за ваш ответ. –

+0

Привет, Колин, Хорошие новости FB.API («/ me/mynamespace: smash», Facebook.HttpMethod.POST, publishActionCallback, querySmash) работает. Тем не менее, FB.API («me/mynamespace: smash», Facebook.HttpMethod.POST, Callback, wwwForm) возвращает 400 Bad-запрос, даже если я создал свойство типа изображения «screenpic». Есть идеи? Кроме того, поскольку для примера smash требуется профиль querySmash ["profile"] = testUserID; как я могу одновременно отправить идентификатор профиля и скриншот в тот же звонок FB.API? Наконец, в качестве предложения для SDK, добавьте NAMESPACE в настройки и дайте доступ через FB.NAMESPACE. Благодаря! –

+0

'namespace', вероятно, принадлежит к настройкам, и мы учтем это в будущей версии SDK (если вы отправите ошибку на https://developers.facebook.com/x/bugs/trending/, то даст вам что-то для отслеживания). Однако, не зная конкретных значений, которые вы передаете в этот вызов функции, и детали вашей конфигурации, трудно точно узнать, что происходит в вашем вызове. Опять же, если вы отправляете (отдельную) ошибку, вы можете включить информацию, которую хотите сохранить конфиденциальной, но позвольте нам увидеть, можем ли мы помочь, особенно если есть ошибка. –