Вход в Facebook возвращает пустой токен доступа

Юнити 4.3.3f1

SDK версии 5.0.4

Версия сборки 140220.cc3a9c089a2eb9e


Здравствуйте, я разрабатывал игру в течение последних 4 месяцев, используя Facebook SDK для Unity, и с прошлой пятницы у меня возникла проблема. Каждый раз, когда я пытаюсь войти в свое приложение из своего приложения, Result.Text из метода LoginCallback(результат FBResult){} возвращает следующую строку:

{"is_logged_in":false,"user_id":"","access_token":"","access_token_expires_at":"01/01/0001 00:00:00"}

Итак, по какой-то причине он не получает user_id и не генерирует правильный токен для использования в приложении.

Я удостоверился, что имя моего пакета, имя класса и хэши ключей совпадают с моими настройками facebook в Unity SDK и моими настройками приложения на Facebook, они совпадают.

Я заметил одну вещь, которая может означать что-то или нет, я не знаю, что имя класса теперь

com.facebook.unity.FBUnityDeepLinkingActivity

в моих настройках FacebookSettings из Unity, поэтому я изменил его на то же значение в настройках моего приложения из Facebook.

Я нажал кнопку Regenerate Android Manifest, и это мой манифест на случай, если он поможет определить проблему:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.unity3d.player" android:installLocation="preferExternal" android:theme="@android:style/Theme.NoTitleBar" android:versionCode="1" android:versionName="1.0">
  <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />
  <application android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="true">
    <activity android:name="com.facebook.unity.FBUnityPlayerActivity" android:launchMode="singleTask" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
    <activity android:name="com.unity3d.player.UnityPlayerActivity" android:launchMode="singleTask" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
    </activity>
    <activity android:name="com.unity3d.player.UnityPlayerNativeActivity" android:launchMode="singleTask" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="false" />
    </activity>
    <activity android:name="com.facebook.LoginActivity" android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation">
    </activity>
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="\ 1422526867979289" />
    <activity android:name="com.facebook.unity.FBUnityLoginActivity" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
    </activity>
    <activity android:name="com.facebook.unity.FBUnityDeepLinkingActivity" android:exported="true">
    </activity>
  </application>
</manifest>

Любая помощь будет принята с благодарностью, спасибо.

PS: И еще один быстрый вопрос. Какой манифест работает? Тот, что находится на:

Assets/Android/AndroidManifest.xml 

или тот, что на:

Assets/Plugins/Android/AndroidManifest.xml

Тем не менее, оба манифеста точно такие же, как тот, который я разместил здесь. Спасибо.


person Pitu Seligmann    schedule 25.03.2014    source источник
comment
Спасибо за использование нашего SDK! Какой набор разрешений вам требуется при входе в систему? Мы обнаружили ошибку, требующую только разрешения publish_actions. Кроме того, вы используете какие-либо другие плагины? Правильный манифест Android должен быть взят из Assets/Plugins/Android. Что еще находится в папке Assets/Android? Ваш манифест Android должен выглядеть так: pastebin.mozilla.org/4704196. Поэтому переместите фильтры намерений на com.unity3d. .player.UnityPlayerNativeActivity и избавьтесь от com.facebook.unity.FBUnityPlayerActivity.   -  person juraj    schedule 28.03.2014
comment
Привет @juraj Я только что ответил на вопрос, проблема была в ksytore. Спасибо!   -  person Pitu Seligmann    schedule 28.03.2014


Ответы (1)


Как предположил другой разработчик, проблема заключалась в том, что вход в Facebook перестал работать, когда я добавил хранилище ключей, чтобы иметь возможность загрузить свой apk в магазин игр. После добавления хранилища ключей мне нужно было обработать его с помощью keytool и загрузить в свою учетную запись приложения Facebook только что созданный Keyhash.

Для справки в будущем было бы хорошо, если бы всякий раз, когда происходит что-то подобное, sdk мог генерировать исключение или что-то в этом роде вместо пустого массива, было бы намного проще попытаться решить проблему.

person Pitu Seligmann    schedule 27.03.2014
comment
Вы должны использовать logcat при разработке для Android. Самый простой способ — установить Eclipse, перейти в Window->Show view->Other, развернуть Android и выбрать Logcat. Затем настройте фильтры для пакета вашего приложения и теги Unity, FBUnitySDK и fb4a. Таким образом, вы действительно можете видеть, что происходит. В вашем случае вы увидите Invalid application {SOME APP ID} под тегом fb4a. - person juraj; 28.03.2014
comment
Большое спасибо @juraj, я всегда использую Logcat при работе с Unity и всегда с фильтром Unity. Я не знал о fb4a, так что буду иметь в виду. Спасибо! - person Pitu Seligmann; 31.03.2014