Unity Facebook SDK: ошибка AppRequest 400 Неверный запрос
Я создаю класс социального менеджера для использования с Facebook Unity SDK, а не с основной версией [31], а только с той, которую вы можете получить на Facebook: https://developers.facebook.com/docs/unity/downloads
Я создаю это для использования с Android и IOS, используя движок Unity3D.
Все прошло довольно гладко, пока я не попытался реализовать App-запрос с менеджером.
Я получаю "Ошибка 400 неверный запрос" без особого включения, кроме сообщения об ошибке, поэтому я надеялся, что кто-нибудь здесь сможет помочь мне разобраться в этом:
Код, который вызывает запрос приложения:
void RequestAskfor(string requestTitle, string requestMessage, string objectID, string Quantity)
{
string[] friendIDs = new string[CurrentUser.FriendList.Count];
for (int i = 0; i < friendIDs.Length; i++)
{
friendIDs[i] = CurrentUser.FriendList[i].UserID;
}
string data = "{\"type\":\"AskFor\",\"item\":\"{\"objectID\":\"" + objectID + ",\"quantity\":\"" + Quantity + "}}";
FB.AppRequest(requestMessage, Facebook.OGActionType.AskFor, objectID, null, null, null, data, requestTitle, RequestCallback);
}
И это кнопка GUI, которая должна проверить, работает ли она:
if(GUI.Button(new Rect(300, 300, 300, 300), "Apprequest Test"))
{
RequestAskfor("Giv mig mad", "Giiiiv miiiig maaaaaad", "food", "1");
}
Вот мои разрешения, которые я использовал для аутентификации приложения:
if (GUI.Button(new Rect(100, 200, 125, 35), "Login!"))
{
Login("email,publish_actions,public_profile,user_friends,invitable_friends");
}
Весь приведенный выше код работает (в некоторой степени), и я даже могу получить "Экран запроса приглашения"
Однако, когда я нажимаю "ОК" на экране запроса приглашения, я получаю это сообщение об ошибке и внешний вызов от API:
Сообщение об ошибке:
400 Bad Request
UnityEngine.Debug:LogError(Object)
FbDebug:Error(String)
Facebook.FallbackData:JSFallback(String)
Facebook.AsyncRequestDialogPost:CallbackWithErrorHandling(FBResult)
Facebook.<Start>c__Iterator0:MoveNext()
Внешний вызов: (слишком большой для правильного форматирования)
External Call: fbUi("{\"message\":\"Giiiiv
miiiigmaaaaaad\",\"action_type\":\"askfor\",\"
object_id\":\"food\",\"data\":\"{\\\"type\\\":\\\"AskFor\\\",\\\"item\\\":\\\"
{\\\"objectID\\\":\\\"food,\\\"quantity\\\":\\\"1}}\",\"title\":\"Giv mig
mad\",\"app_id\":\"339275729572840\",\"locale\":\"en_US\",
\"method\":\"apprequests\"}", "1");
UnityEngine.Application:ExternalCall(String, Object[])
Facebook.CanvasFacebook:JSFallbackUI(String, Dictionary`2, FacebookDelegate)
Facebook.FallbackData:JSFallback(String)
Facebook.AsyncRequestDialogPost:CallbackWithErrorHandling(FBResult)
Facebook.<Start>c__Iterator0:MoveNext()
Если вы хотите поближе взглянуть на код, вот ссылка на только два сценария в проекте: https://www.dropbox.com/s/5htdry9gd4bhwip/SocialManager.zip?dl=0
Я проверял документацию по методу FB.AppRequest и пытался найти людей с похожей проблемой, но до сих пор не смог решить эту проблему (очевидно).
Однако весь остальной код работает нормально, в настоящий момент меня просто беспокоят запросы приложений.
Вероятно, следует также упомянуть, что этот код не закончен и выглядит очень неаккуратно. Но заранее спасибо за любую помощь, которую вы, ребята, можете оказать мне!
4 ответа
Идентификатор объекта должен ссылаться на фактический объект OpenGraph (обычно числовой идентификатор). Вот как вы их создаете.
https://developers.facebook.com/docs/games/requests/v2.1#creatingobject
Попробуйте отладить результат, который вы получите от Facebook в MonoDevelop, как подробно описано здесь. Там вы получите правильное сообщение об ошибке, которое даст вам больше информации.
Спасибо за ответы на все вопросы!
Мне удалось решить эту проблему, зайдя в Object Browser Tool и найдя правильный objectID, который дал мне ошибки.
Я действительно получил ту же ошибку. Проблема в том, что данные вашего приложения неверны на Facebook. Перейдите в раздел "Детали моего приложения" на Facebook и измените категорию на "Игры".
Я надеюсь, что это работает для вас:).