public async Task <FacebookResponse <bool> > LoginAsync(string[] permissions, FacebookPermissionType permissionType = FacebookPermissionType.Read) { var retVal = IsLoginSessionActive; FacebookActionStatus status = FacebookActionStatus.Error; if (!HasPermissions(permissions)) { var window = UIApplication.SharedApplication.KeyWindow; var vc = window.RootViewController; while (vc.PresentedViewController != null) { vc = vc.PresentedViewController; } LoginManagerLoginResult result = await(permissionType == FacebookPermissionType.Read ? loginManager.LogInWithReadPermissionsAsync(permissions, vc) : loginManager.LogInWithPublishPermissionsAsync(permissions, vc)); if (result.IsCancelled) { retVal = false; status = FacebookActionStatus.Canceled; } else { retVal = HasPermissions(result.GrantedPermissions.Select(p => $"{p}").ToArray()); NSUserDefaults.StandardUserDefaults.SetString(result.Token.TokenString, FBAccessTokenKey); NSUserDefaults.StandardUserDefaults.SetValueForKey(result.Token.ExpirationDate, FBAccessTokenExpirationDateKey); NSUserDefaults.StandardUserDefaults.SetString(result.Token.UserId, FBUserIdKey); NSUserDefaults.StandardUserDefaults.Synchronize(); status = retVal ? FacebookActionStatus.Completed : FacebookActionStatus.Unauthorized; } } else { status = FacebookActionStatus.Completed; } var fbArgs = new FBEventArgs <bool>(retVal, status); OnLogin(this, fbArgs); pendingAction?.Execute(); pendingAction = null; return(new FacebookResponse <bool>(fbArgs)); }
public async Task <FacebookResponse <bool> > LoginAsync(string[] permissions, FacebookPermissionType permissionType = FacebookPermissionType.Read) { var retVal = IsLoggedIn; FacebookActionStatus status = FacebookActionStatus.Error; if (!retVal || !HasPermissions(permissions)) { var window = UIApplication.SharedApplication.KeyWindow; var vc = window.RootViewController; while (vc.PresentedViewController != null) { vc = vc.PresentedViewController; } LoginManagerLoginResult result = await(permissionType == FacebookPermissionType.Read ? loginManager.LogInWithReadPermissionsAsync(permissions, vc) : loginManager.LogInWithPublishPermissionsAsync(permissions, vc)); if (result.IsCancelled) { retVal = false; status = FacebookActionStatus.Canceled; } else { //result.GrantedPermissions.h retVal = HasPermissions(result.GrantedPermissions.Select(p => $"{p}").ToArray()); status = retVal ? FacebookActionStatus.Completed : FacebookActionStatus.Unauthorized; } } else { status = FacebookActionStatus.Completed; } var fbArgs = new FBEventArgs <bool>(retVal, status); OnLogin(this, fbArgs); pendingAction?.Execute(); pendingAction = null; return(new FacebookResponse <bool>(fbArgs)); }
public FacebookResponse(T data, FacebookActionStatus status, string msg = "") { Data = data; Status = status; Message = msg; }
public FBEventArgs(T data, FacebookActionStatus status, string msg = "") { Data = data; Status = status; Message = msg; }
public async Task <FacebookResponse <bool> > LoginAsync(string[] permissions, FacebookPermissionType permissionType = FacebookPermissionType.Read) { _loginTcs = new TaskCompletionSource <FacebookResponse <bool> >(); var retVal = IsLoginSessionActive; FacebookActionStatus status = FacebookActionStatus.Error; if (!HasPermissions(permissions)) { var window = UIApplication.SharedApplication.KeyWindow; var vc = window.RootViewController; while (vc.PresentedViewController != null) { vc = vc.PresentedViewController; } loginManager.LogIn(permissions, vc, (result, error) => { if (error == null) { if (result.IsCancelled) { retVal = false; status = FacebookActionStatus.Canceled; } else { retVal = HasPermissions(result.GrantedPermissions.Select(p => $"{p}").ToArray()); NSUserDefaults.StandardUserDefaults.SetString(result.Token.TokenString, FBAccessTokenKey); NSUserDefaults.StandardUserDefaults.SetValueForKey(result.Token.ExpirationDate, FBAccessTokenExpirationDateKey); NSUserDefaults.StandardUserDefaults.SetString(result.Token.UserId, FBUserIdKey); NSUserDefaults.StandardUserDefaults.Synchronize(); status = retVal ? FacebookActionStatus.Completed : FacebookActionStatus.Unauthorized; } } else { retVal = false; status = FacebookActionStatus.Error; } var fbArgs = new FBEventArgs <bool>(retVal, status); OnLogin?.Invoke(CrossFacebookClient.Current, fbArgs); _loginTcs?.TrySetResult(new FacebookResponse <bool>(fbArgs)); pendingAction?.Execute(); pendingAction = null; }); } else { var fbArgs = new FBEventArgs <bool>(retVal, FacebookActionStatus.Completed); OnLogin?.Invoke(CrossFacebookClient.Current, fbArgs); _loginTcs?.TrySetResult(new FacebookResponse <bool>(fbArgs)); pendingAction?.Execute(); pendingAction = null; } return(await _loginTcs.Task); }