我对Facebook SDK有疑问。它在编辑器和apk中工作正常(如果我检查Unity中的开发构建选项),但在发布版本中它不起作用。
这是我的代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Facebook.Unity;
using UnityEngine.UI;
using Facebook.MiniJSON;
public class FBManager : MonoBehaviour {
[SerializeField]private Text FBErrorText;
public RawImage FBProfilePicture;
public Image DefaultAvatar;
public Text UsernameText;
public Text WelcomeMessage;
public Button FacebookButton;
private Color fbProfilePictureColor;
private Color defaultAvatarColor;
private string getData;
private string FBUserName;
void Awake()
{
if (!FB.IsInitialized)
{ FBErrorText.text = "fb not ini, initializing";
FB.Init(InitCallBack, OnHideUnity);
FBErrorText.text = "called fb.init";
}
else
{ FBErrorText.text += "initialized";
FB.ActivateApp();
FBErrorText.text += "called fb.activateApp";
}
fbProfilePictureColor = FBProfilePicture.color;
defaultAvatarColor = DefaultAvatar.color;
fbProfilePictureColor.a = 0f;
FBProfilePicture.color = fbProfilePictureColor;
}
void Start()
{
//StartCoroutine (FbLoginWait ());
}
IEnumerator FbLoginWait()
{
yield return new WaitUntil (()=> FB.IsInitialized);
FBLogin ();
}
//auto logare
private void InitCallBack()
{
if (FB.IsInitialized)
{
//UsernameText.text = "Initialized FB SDK";
FBErrorText.text = "fb is initialized";
FB.ActivateApp ();
FBErrorText.text = "fb activated app";
}
else
{
FBErrorText.text = "Failed to initialize the Facebook SDK";
Debug.Log ("Failed to initialize the Facebook SDK");
}
}
private void OnHideUnity(bool isGameShown)
{
if (!isGameShown)
{
Time.timeScale = 0;
}
else
{
Time.timeScale = 1;
}
}
private void HandleLoginFB(bool IsLogged)
{
if (IsLogged)
{
FBErrorText.text = "user logged in";
Debug.Log ("User logged in");
}
else
{
FBErrorText.text = "user cancelled login";
Debug.Log ("User cancelled login");
}
}
private void AuthCallback(IResult result)
{
FBErrorText.text = "called authcallback";
HandleLoginFB (FB.IsLoggedIn);
FBErrorText.text = "handling fb";
if (FB.IsLoggedIn)
{
var aToken = Facebook.Unity.AccessToken.CurrentAccessToken;
Debug.Log (aToken.UserId);
foreach (string perm in aToken.Permissions) {
Debug.Log (perm);
}
FB.API ("/me/picture?type=square&height=50&width=50", HttpMethod.GET, UpdateProfileImage);
FB.API ("me?fields=name", HttpMethod.GET, GetUsername);
FBErrorText.text = "fb is logged in";
}
else
{
FBErrorText.text = "fb is not logged in";
}
}
public void FBLogin()
{
FBErrorText.text = "called fblogin";
List<string> perms = new List<string> () { "public_profile, email", "user_friends" };
FBErrorText.text = "created perms";
FB.LogInWithReadPermissions (perms, AuthCallback);
FBErrorText.text = "ended fblogin";
}
private void UpdateProfileImage(IGraphResult result)
{
if(result.Texture != null)
{
FBProfilePicture.texture = result.Texture;
defaultAvatarColor.a = 0f;
fbProfilePictureColor.a = 255f;
DefaultAvatar.color = defaultAvatarColor;
FBProfilePicture.color = fbProfilePictureColor;
}
}
private void GetUsername(IGraphResult result)
{
FBUserName = result.ResultDictionary ["name"].ToString ();
UsernameText.text = FBUserName;
WelcomeMessage.text = FBUserName + "'s NET WORTH";
}
}
(或此处的代码https://hastebin.com/osatiketij.cs)
屏幕上显示的最后一个错误文本是:“created perms”,因此在调用FB.LogInWithReadPermissions方法之前,之后不会出现错误文本,但也没有登录。
知道它可能是什么吗?
答案 0 :(得分:1)
对于每个人来到这个主题:我是如何设法解决这个问题的方法是使用Android Studio来查看Logcat为什么它不起作用,而且它是&#34;缺少&#34;一类。对于来这里的人,我通过添加&#34; -keep class com.facebook来修复它。** {*;}&#34;到我的proguard用户文件。