public override void Authenticate(GetStringCallback callback)
 {
     if (FB.IsInitialized)
     {
         var perms = new List <string>()
         {
             "public_profile", "email"
         };
         FB.LogInWithReadPermissions(perms, delegate(ILoginResult result)
         {
             if (FB.IsLoggedIn)
             {
                 callback?.Invoke(true, AccessToken.CurrentAccessToken.UserId); // return string id
             }
             else
             {
                 callback?.Invoke(false, null);
             }
         });
     }
     else
     {
         callback?.Invoke(false, null);
     }
 }
 public override void GetEmail(GetStringCallback callback = null)
 {
     FB.API("me?fields=email", Facebook.Unity.HttpMethod.GET, delegate(IGraphResult nameResult)
     {
         if (String.IsNullOrEmpty(nameResult.Error) && !nameResult.Cancelled)
         {
             string email = nameResult.ResultDictionary["email"] as string;
             callback?.Invoke(true, email); // return string email
         }
         else
         {
             callback?.Invoke(false, null);
         }
     });
 }
 public abstract void GetName(GetStringCallback callback           = null);
 public abstract void GetEmail(GetStringCallback callback          = null);
 public abstract void Authenticate(GetStringCallback callback      = null);