返回空访问令牌的Facebook登录

返回空访问令牌的Facebook登录,facebook,unity3d,facebook-login,facebook-access-token,facebook-unity-sdk,Facebook,Unity3d,Facebook Login,Facebook Access Token,Facebook Unity Sdk,统一4.3.3f1 SDK版本5.0.4 内部版本140220.cc3a9c089a2eb9e 您好,在过去的4个月里,我一直在使用FacebookSDK for Unity开发一款游戏,从上周五开始我就遇到了一个问题。每次我尝试从我的应用程序登录到我的应用程序时,LoginCallback(FBResult Result){}方法的Result.Text返回以下字符串: {"is_logged_in":false,"user_id":"","access_token":"","access_

统一4.3.3f1

SDK版本5.0.4

内部版本140220.cc3a9c089a2eb9e


您好,在过去的4个月里,我一直在使用FacebookSDK for Unity开发一款游戏,从上周五开始我就遇到了一个问题。每次我尝试从我的应用程序登录到我的应用程序时,LoginCallback(FBResult Result){}方法的Result.Text返回以下字符串:

{"is_logged_in":false,"user_id":"","access_token":"","access_token_expires_at":"01/01/0001 00:00:00"}
因此,出于某种原因,它既没有获得用户id,也没有生成用于应用程序的正确令牌

我确保我的包名、类名和密钥哈希值在Unity SDK上的facebook设置和facebook上的应用程序设置之间匹配,它们确实匹配

有一件事我注意到它可能有什么意义,我不知道它的类名是什么

com.facebook.unity.FBUnityDeepLinkingActivity
在Unity的FacebookSettings上,我将其更改为Facebook上“我的应用程序”设置上的相同值

我按下了“重新生成Android清单”按钮,这是我的清单,以防它有助于识别问题:

<?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>
或是在:

Assets/Plugins/Android/AndroidManifest.xml

然而,这两份清单与我在这里发布的清单完全相同。谢谢。

正如一位开发人员建议的那样,问题在于,当我添加密钥库以便能够将我的apk上传到playstore时,Facebook登录停止工作。添加密钥库后,我需要使用keytool处理它,并将新创建的密钥哈希上传到我的Facebook应用程序


作为将来的参考,无论何时发生类似情况,sdk都可以抛出异常或其他东西,而不是空数组,这将使尝试解决该问题更加简单。

感谢您使用我们的sdk!登录期间您需要什么权限集?我们发现一个只需要“发布操作”权限的bug。另外,您是否使用其他插件?正确的android清单应该取自Assets/Plugins/android。您的资产/Android文件夹中还有什么?你的android清单应该是这样的,所以将意向过滤器移到“com.unity3d.player.unityPlayerActiveActivity”并去掉com.facebook.unity.FBUnityPlayerActivity.Hi@juraj我刚才回答了这个问题,问题出在ksytore中。谢谢在为android开发时,应该使用logcat。最简单的方法是安装Eclipse,进入窗口->显示视图->其他扩展Android并选择Logcat。然后为应用程序包设置过滤器,并标记“Unity”、“FBUnitySDK”和“fb4a”。这样你就能真正看到发生了什么。在您的例子中,您会在fb4a标记下看到“无效应用程序{SOME APP ID}”。非常感谢@juraj,我在使用Unity时总是使用Logcat,并且总是使用“Unity”过滤器。我不知道fb4a,所以我会记住的。谢谢
Assets/Plugins/Android/AndroidManifest.xml