namespace RedSkyLab.Login
{
/// <summary>
/// This class contains all functionality for user log in/sign up.
/// Instance can be accessed via SdkMain.Login
/// </summary>
public interface ILoginManager
{
/// <summary>
/// Initialization. Should be called before any other methods in this class
/// User will be logged in silently if he was logged in previous game session
/// </summary>
/// <param name="listener">User login/logout event handler</param>
void Init(ILoginListener listener);
/// <summary>
/// Shows login/sign up dialog
/// </summary>
void LogIn();
/// <summary>
/// Login via Facebook
/// </summary>
/// <param name="userAccessToken">Facebook user access token</param>
void FacebookLogin(string userAccessToken);
/// <summary>
/// Logout
/// </summary>
void LogOut();
/// <summary>
/// Is user logged in?
/// </summary>
bool IsLoggedIn();
/// <summary>
/// Get user profile
/// </summary>
/// <returns>User profile is user logged in or null</returns>
IUserProfile GetUserProfile();
/// <summary>
/// Download user picture
/// </summary>
ITask<Texture2D> DownloadAvatar();
}
/// <summary>
/// User login/logout event handler
/// </summary>
public interface ILoginListener
{
/// <summary>
/// Called when user successfully logged in on <see cref="ILoginManager.LogIn"/>
/// or authomatically on <see cref="ILoginManager.Init"/>
/// </summary>
/// <param name="userProfile">Ссылка на профиль игрока</param>
void OnUserLoggedIn(IUserProfile userProfile);
/// <summary>
/// Called when user logged out
/// </summary>
void OnUserLoggedOut();
/// <summary>
/// Login failed on <see cref="ILoginManager.LogIn"/>
/// </summary>
/// <param name="errorMessage">Error message</param>
void OnLoginFailed(string errorMessage);
}
/// <summary>
/// User profile
/// </summary>
public interface IUserProfile
{
string FirstName { get; }
string LastName { get; }
string Username { get; }
}
}