Newer
Older
app-47-android / Assets / FacebookSDK / Examples / Windows / FBWindowsLoginManager.cs
@a_kuznecov a_kuznecov on 22 Jun 2023 3 KB First Commit
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Facebook.Unity;
using System;

public class FBWindowsLoginManager : MonoBehaviour
{
    public FBWindowsLogsManager Logger;
    public InputField Permissions;
    public RawImage UserImage;
    public Text UserName;


    public void LogInReadButton()
    {
        if (FB.IsInitialized)
        {
            FB.LogInWithReadPermissions(Permissions.text.Split(','), AuthCallback);
        }
        else
        {
            Logger.DebugWarningLog("Not Init");
        }
    }

    public void LogInPublishButton()
    {
        if (FB.IsInitialized)
        {
            FB.LogInWithPublishPermissions(Permissions.text.Split(','), AuthCallback);
        }
        else
        {
            Logger.DebugWarningLog("Not Init");
        }
    }

    public void LogOutButton()
    {
        if (FB.IsLoggedIn)
        {
            FB.LogOut();
            Logger.DebugLog("Logged out");
        }
        else
        {
            Logger.DebugWarningLog("Login First");
        }
    }

    private void AuthCallback(ILoginResult result)
    {
        if (result.Error != null)
        {
            Logger.DebugErrorLog("Error: " + result.Error);
        }
        else
        {
            if (FB.IsLoggedIn)
            {
                // AccessToken class will have session details
                var aToken = Facebook.Unity.AccessToken.CurrentAccessToken;
                // Print current access token's User ID
                Logger.DebugLog("aToken.UserId: " + aToken.UserId);
                // Print current access token's granted permissions
                foreach (string perm in aToken.Permissions)
                {
                    Logger.DebugLog("perm: " + perm);
                }
                //get current profile data
                GetCurrentProfile();
            }
            else
            {
                Logger.DebugWarningLog("User cancelled login");
            }
        }
    }

    public void GetCurrentProfile()
    {
        Logger.DebugLog("Getting current user profile ...");

        FB.CurrentProfile((IProfileResult result) =>
        {
            if (result.Error != null)
            {
                Logger.DebugErrorLog(result.Error);
            }
            else
            {
                Logger.DebugLog("UserID: " + result.CurrentProfile.UserID);
                Logger.DebugLog("Name: " + result.CurrentProfile.Name);
                Logger.DebugLog("First Name: " + result.CurrentProfile.FirstName);
                Logger.DebugLog("Email: " + result.CurrentProfile.Email);
                Logger.DebugLog("ImageURL: " + result.CurrentProfile.ImageURL);
                GetUserLocale();

                UserName.text = result.CurrentProfile.Name + " " + result.CurrentProfile.LastName;
                if (result.CurrentProfile.ImageURL != "" && result.CurrentProfile.ImageURL != null)
                {
                    StartCoroutine(LoadPictureFromUrl(result.CurrentProfile.ImageURL, UserImage));
                }
            }
        });
    }

    public void GetUserLocale()
    {
        FB.GetUserLocale((ILocaleResult result) =>
        {
            if (result.Error != null)
            {
                Logger.DebugErrorLog("Error getting user locale: " + result.Error);
            }
            else
            {
                Logger.DebugLog("User Locale: " + result.Locale);
            }
        });
    }

    IEnumerator LoadPictureFromUrl(string url, RawImage itemImage)
    {
        Texture2D UserPicture = new Texture2D(32, 32);

        WWW www = new WWW(url);
        yield return www;

        www.LoadImageIntoTexture(UserPicture);
        www.Dispose();
        www = null;

        itemImage.texture = UserPicture;
    }
}