Unity NullReference при попытке использовать ParseFacebookUtils для входа в систему для анализа

Я не знаком с пользовательскими тегами SO, поэтому надеюсь, что это сработает: @aaron

Это самый близкий вопрос, который я мог найти, который относится к моей проблеме, но это не совсем проблема. (Я попробовал Google, Bing и собственный поиск SO.) .com/questions/25014006/nullreferenceexception-with-parseobjects-in-array-of-pointers

Моя проблема: у меня есть игра Unity Web-Player, которая взаимодействует как с Facebook, так и с Parse. после решения многих проблем в нем у меня есть это, где он легко подключается к Facebook, извлекает информацию о профиле пользователя и изображение. Затем он пытается подключиться к синтаксическому анализу, чтобы зарегистрировать пользователя в синтаксическом анализе, чтобы получить данные, связанные с игрой (например, рекорды, статистику валюты, бонусы и т. д.), и когда он пытается это сделать, я получаю исключение NullReferenceException. Конкретное содержание сообщения об ошибке:

«NullReferenceException: ссылка на объект не указывает на экземпляр объекта в GameStateController.ParseFBConnect (System.String userId, System.String accessToken, DateTime tokenExpiration) [0x0001a] в C:...\Assets\Scripts\CSharp\CharacterScripts\GameStateController .cs:1581 в GameStateController.Update () [0x0011f] в C:\Users\Michieal\Desktop\Dragon Rush Game\Assets\Scripts\CSharp\CharacterScripts\GameStateController.cs:382"

Код, который генерирует это сообщение об ошибке:

    public void ParseFBConnect(string userId, string accessToken, DateTime tokenExpiration)
{

    Task<ParseUser> logInTask = ParseFacebookUtils.LogInAsync (userId, accessToken, tokenExpiration).ContinueWith<ParseUser> (t =>
    {
        if (t.IsFaulted || t.IsCanceled)
        {
            if (t.IsCanceled)
                Util.LogError ("LoginTask::ParseUser:: Cancelled. >.<");
            // The login failed. Check the error to see why.
            Util.LogError ("Error Result: " + t.Result.ToString ());
            Util.LogError ("Error Result (msg): " + t.Exception.Message);
            Util.LogError ("Error Result (inmsg): " + t.Exception.InnerException.Message);
        }

        if (t.IsCompleted)
        { // No need to link the user to a FB account, as there are no "real" (non fb) accounts yet.
            Util.Log ("PFBC::Login result reports successful. You Go Gurl!");
            // Login was successful.
            user = t.Result; // assign the resultant user to our "user"... 
            RetryPFBC = false;
            return user;
        }
        return t.Result;
    });
    if (user.ContainsKey ("NotNew"))
    { // on true, then we don't have to set up the keys...
        Util.Log ("User, " + user.Username + ", contains NotNew Key.");
    }
    else
    {
        CreateKeys (); // Create Keys will only build MISSING Keys, setting them to the default data specifications.
        user.Email = Email;
        user.SaveAsync (); // if we have created the keys data, save it out.
    }

}

Ему передаются правильные (после аутентификации) значения Facebook (FB.UserId, FB.AccessToken, FB.AccessTokenExpiresAt) в указанном порядке. Я использую FB Sdk версии 6.0.0 и Parse Unity SDK версии 1.2.16.

В файле журнала вместо каких-либо комментариев в debug.log/Util.log появляется ошибка «Нулевая ссылка» (см. выше), за которой следует «О анализе URL-адреса: https://api.parse.com/1/classes/_User

Проверка того, является ли https://api.parse.com/1/classes/_User действительный домен

Проверка запроса-хоста: api.parse.com на соответствие действительному домену: *"

И на этом он просто остановился. Итак, я создал простой блок повтора в функции Update() для вызова функции ParseFBConnect() примерно каждые 10 секунд. Который, кажется, только заполняет мой файл журнала теми же наборами ошибок. После поиска помощи в Интернете я попытался изменить FB.AccessTokenExpiresAt на DateTime.UtcNow.AddDays(1), поскольку другие говорили, что это работает для них. Кажется, я не могу заставить ни работать на меня. Когда я проверяю панель инструментов в Parse, чтобы увидеть, показывает ли она какие-либо обновления или активность, этого не происходит, и не было уже несколько дней. Порядок выполнения скрипта следующий:

Parse.ParseInitialzeBehaviour -- -2875 (самое первое) Загрузчики Facebook (FB, Editor, Canvas и т. д.) -- от -1000 до -900 GameStateController -- -875 ... Итак, я знаю, что загружается Parse.ParseInitializeBehaviour сначала (еще один результат поиска), и я отследил NullReference до Parse.Unity.dll, изменив, где хранится метод входа в систему; GSC находится на игроке (Игрок запускается в заставке и остается на протяжении всей игры). Я также попытался поместить Parse.ParseInitializeBehaviour в игровой объект Player и в пустой игровой объект (с помощью простого скрипта dontdestroy(gameObject)). И мой идентификатор приложения и мой ключ DotNet правильно заполнены на объекте.

Когда я впервые настроил синтаксический анализ и в текущей производственной версии игры, он может успешно создать учетную запись пользователя на основе приведенного выше фрагмента кода. Теперь он просто ломается при попытке разобрать URL...

Итак, мой вопрос: что я делаю неправильно? У кого-нибудь еще есть эта проблема? и есть ли у кого-нибудь идеи/предложения/и т. д., что делать, чтобы исправить это? Я действительно просто хочу, чтобы это работало и чтобы пользователь мог войти в систему, чтобы я мог получить его данные и продолжить взламывать другие вещи в моей игре: D

Любая помощь приветствуется!! и я благодарю вас за то, что нашли время, чтобы прочитать это.


person CherryCoke    schedule 21.08.2014    source источник
comment
@aaron (потому что не похоже, что пользовательский тег работал в теле этого)   -  person CherryCoke    schedule 21.08.2014
comment
хм... Хорошо... Так что мой следующий вопрос будет.... Есть ли альтернатива использованию синтаксического анализа, чтобы я мог что-то делать, пока не выйдет обновление? Это своего рода последний шаг между мной и безграничным богатством от продажи бонусов :P   -  person CherryCoke    schedule 24.08.2014
comment
хорошо, хорошо.. Мне нужно что-то, что работает, и, видимо, Parse просто не то. ›.‹ За последние 3 дня я изменил все, что мог. Я даже вернулся к уровню сложности в примерах. Это тоже не работает ... в течение нескольких минут после полудня (сейчас 2 часа ночи) у меня было это там, где он считывал данные пользователя, но при сохранении он не работал, и вход в систему все еще сообщал об ошибке нулевой ссылки . В целом - Parse: 0 из 5 звезд. Грустный.   -  person CherryCoke    schedule 25.08.2014
comment
Хороший. Потому что Parse — дерьмо, и я никогда не буду использовать его для серверной части игры. как. Когда-либо. Мое приложение facebook было удалено из списка. Это супер. Итак, поскольку здесь нет никакой помощи (мое лучшее предположение - потому что синтаксический анализ требует серьезной перезаписи), и это не 30-секундный ответ... Я потратил последние две недели времени, пытаясь заставить что-то сломанное работать. В настоящее время я присваиваю PARSE отзыв -2 из 5 звезд. НИКОГДА НИКОМУ НЕ РЕКОМЕНДУЮ ЭТОТ ПРОДУКТ.   -  person CherryCoke    schedule 26.08.2014


Ответы (1)


Ответ на этот вопрос выглядит следующим образом: бэкэнд как сервис - Bing

Откажитесь от анализа, потому что он плохо работает с Unity3d, поддержка (очевидно, судя по количеству ответов на этот вопрос и другие вопросы от людей, которым нужна помощь, чтобы заставить его работать) крайне отсутствует, и большинство, если не все, из примеров, чтобы показать, как его использовать, сломаны/отсутствуют части/и т. д. Я вижу в этом провал со стороны создателей. Я также рассматриваю это как ложную рекламу. Итак, чтобы ответить на этот вопрос - PARSE - это пустая трата времени, переходите к делу и хватайте что-то, что действительно работает, имеет реальные РАБОЧИЕ примеры и поддерживается кем-то, кто знает, КАК ПРОГРАММИРОВАТЬ в среде UNITY3d.

Прекрасным примером этого может служить служба Photon Networking, App42 от Shephertz.com, Azure от Microsoft и т. д. Учитывая огромное количество ответов на этот вопрос, если исключить PARSE, это должно было стать легкой задачей. Я включил ссылку Bing Search, вы также можете выполнить быстрый поиск по Gaming Backends (вы найдете блоги и обзоры).

Я настоятельно рекомендую вам прочитать обзоры этих сервисов, прочитать вопросы (и отметить, были ли на них ответы, или, в случае с Parse, они просто закрыли форум, вместо того, чтобы отвечать своим клиентам)... И просто просмотрите примеры, которые они приводят для использования своих продуктов. Если они покажут, как это работает, и ожидаемые результаты (как это делает MSDN), вам будет намного лучше и намного легче заставить это работать.

К вашему сведению: моя игра теперь имеет все внутренние интеграции, сохраняет/создает/получает пользователей и их данные, имеет магазин и движется вперед, так как я отказался от PARSE.

Чтобы все было правильно, я БЫЛ использовать Parse 1.2.16 для Unity и Facebook для Unity SDK 6.0.0... Я попробовал Parse 1.2.14 с теми же результатами, и я пробовал оба Юнити 4.5.2 и 4.5.3. Мое мнение о Parse основано на их документации, этих двух версиях API и очень долгих днях, которые я потратил, пытаясь заставить его работать. Затем я добавил тот факт, что НИКТО здесь ВООБЩЕ не ответил на этот вопрос (к сожалению, Stack Overflow является предпочтительным форумом справки / поддержки Facebook. Они даже говорят в своих блогах, справочной документации и т. д., что если у вас есть проблема - напишите ваш вопрос на Stack Overflow.com с соответствующими тегами, что я и сделал.)

О, и окончательный звездный рейтинг Parse (для уточнения) - "-2 из 5" -- это ОТРИЦАТЕЛЬНЫЕ 2 звезды... из 5. как бы "беги от него"... далеко-далеко . Просто для уточнения.

person CherryCoke    schedule 04.09.2014