Вход в Unity Facebook не работает в приложении Facebook на устройстве Android - PullRequest
0 голосов
/ 22 апреля 2019

Так что я реализовал Facebook SDK в своем проекте, здесь проблема в том, что FBlogin не работает, когда у меня есть приложение Facebook на моем устройстве Android. Пожалуйста, моя и моя команда застряли в этом материале. Для более подробной информации, пожалуйста, повторите на этот пост.

Вот код моего Facebook. Это прекрасно работает, когда я удаляю приложение Facebook на моем устройстве.

С приложением facebook на моем устройстве Android: когда я открываю мою игру, появляется окно Facebook, как будто вы хотите продолжить ввод запроса на вход в систему, когда я нажимаю продолжить, он не получает мои данные, такие как «Имя и изображение профиля»

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Facebook.Unity;
using Facebook.MiniJSON;
using UnityEngine.UI;
using System.IO;
using System;

public class Login : MonoBehaviour
{
    public string fbname;
    public string get_data;
    public InputField login_name;
    public Image profilePic;
    public Text fbNameText,FriendsText;//BABJI
    public GameObject loginPanel,mainPanel;

    public bool loggedIn;
    void Awake ()
    {
        if (!FB.IsInitialized)
        {
            FB.Init(() =>
                {
                    if (FB.IsInitialized)
                        FB.ActivateApp();
                    else
                        Debug.LogError("Couldn't initialize");
                },
                isGameShown =>
                {
                    if (!isGameShown)
                        Time.timeScale = 0;
                    else
                        Time.timeScale = 1;
                });
        }
        else
            FB.ActivateApp();

    }

    void Start()
    {
        if (GameSaver.instance.isFBLogin) {
            loginPanel.SetActive (false);
            login_name.gameObject.SetActive (true);
            mainPanel.SetActive (true);
//          StartCoroutine (DelayLogIn ());
        } else {
            loginPanel.SetActive (true);
        }
    }

//  IEnumerator DelayLogIn()
//  {
//      yield return new WaitForSeconds (0.1f);
//
//  }
    private void InitCallback ()
    {
        if (FB.IsInitialized) {
            // Signal an app activation App Event
            FB.ActivateApp();
            // Continue with Facebook SDK
            // ...
        } else {
            Debug.Log("Failed to Initialize the Facebook SDK");
        }
    }
    private void OnHideUnity (bool isGameShown)
    {
        if (!isGameShown) {
            // Pause the game - we will need to hide
            Time.timeScale = 0;
        } else {
            // Resume the game - we're getting focus again
            Time.timeScale = 1;
        }
    }

    public void LoginCalled()
    {

        if (!FB.IsLoggedIn) 
        {
            var perms = new List<string> (){ "public_profile", "email" };
            FB.LogInWithReadPermissions (perms, AuthCallback);
        }
        else 
        {
            //

        }
        // you are already logged in, do something
        FB.API("me?fields=name", HttpMethod.GET, GetFacebookData);
        FB.API("me/picture?type=square&height=128&width=128", HttpMethod.GET, GetProfilePicture);
        login_name.gameObject.SetActive (true);
        mainPanel.SetActive (true);
        loginPanel.SetActive (false);
        GameSaver.instance.isFBLogin=true;
        GameSaver.instance.SaveGameData ();
    }

    private void AuthCallback (ILoginResult result) 
    {
        if (FB.IsLoggedIn) 
        {
            // AccessToken class will have session details
            var aToken = Facebook.Unity.AccessToken.CurrentAccessToken;
            // Print current access token's User ID
            Debug.Log(aToken.UserId);
            // Print current access token's granted permissions
            foreach (string perm in aToken.Permissions) 
            {
                Debug.Log(perm);
            }
            FB.API("me?fields=name", Facebook.Unity.HttpMethod.GET, GetFacebookData);
            //FB.API("/me/picture?redirect=false", HttpMethod.GET, GetProfilePicture);
            //BABJI
            FB.API("me/picture?type=square&height=128&width=128", HttpMethod.GET, GetProfilePicture);
            login_name.gameObject.SetActive (true);
            mainPanel.SetActive (true);
            loginPanel.SetActive (false);
            GameSaver.instance.isFBLogin=true;
            GameSaver.instance.SaveGameData ();
            //BABJI
            loggedIn = FB.IsLoggedIn;
        } 
        else 
        {
            Debug.Log("User cancelled login");
        }
    }

    void GetFacebookData(IResult result)
    {
        fbname = result.ResultDictionary["name"].ToString ();
        login_name.text = fbname ;
        login_name.gameObject.SetActive (true);
        fbNameText.text = fbname;
        Debug.Log("fbName: " + fbname);

    }

    private void GetProfilePicture(IGraphResult result)
    {
        if (result.Error == null && result.Texture != null)
        {       
            profilePic.sprite = Sprite.Create (result.Texture, new Rect (0, 0, 128, 128), new Vector2 ());
        }
    }

}

1 Ответ

0 голосов
/ 23 апреля 2019

в зависимости от того, что мы обсуждали выше
попробуйте этот код:

public void Awake()
{
        // Init Facebook SDK
        if (!FB.IsInitialized)
        {
            // Initialize the Facebook SDK Configuration
            FB.Init(InitCallback, OnHideUnity);
        }
        else
        {
             // Already initialized, signal an app activation App Event
             FB.ActivateApp();
        }
}

private void InitCallback() {
        if (FB.IsInitialized)
        {
            // Signal an app activation App Event
            FB.ActivateApp();
        }
        else
        {
            Debug.Log("Failed to Initialize the Facebook SDK");
        }
} 
private void AuthCallback(ILoginResult result)
{
        if (FB.IsLoggedIn)
        {
            // Here is the region where u r loggged in from facebook acccount
            // Just put your Logic Here
            // AccessToken class will have session details
            var aToken = Facebook.Unity.AccessToken.CurrentAccessToken;
        }
        else
        {
            Debug.Log("Facebook User cancelled login");
        }
}

и вот что вам нужно для вызова, когда вы нажимаете кнопку,

public void LoginWithFaceBook()
{
        var perms = new List<string>() { "public_profile", "email" };
        FB.LogInWithReadPermissions(perms, AuthCallback);
}

также используйте это, когда вы выходите из приложения

public void FacebookLogout()
{
        if (FB.IsLoggedIn)
        {
            FB.LogOut();
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...