/// <summary> /// Gets the application access token asynchronously. /// </summary> /// <param name="facebookOAuthClient">The Facebook OAuth Client.</param> /// <param name="parameters">The parameters.</param> /// <returns>The task of the result.</returns> public static Task <object> GetApplicationAccessTokenTaskAsync(this FacebookOAuthClient facebookOAuthClient, IDictionary <string, object> parameters) { var tcs = FacebookClientTaskExtensions.CreateSource <object>(null); EventHandler <FacebookApiEventArgs> handler = null; handler = (sender, e) => FacebookClientTaskExtensions.TransferCompletionToTask <object>(tcs, e, () => e.GetResultData(), () => facebookOAuthClient.GetApplicationAccessTokenCompleted -= handler); facebookOAuthClient.GetApplicationAccessTokenCompleted += handler; try { facebookOAuthClient.GetApplicationAccessTokenAsync(parameters, tcs); } catch { facebookOAuthClient.GetApplicationAccessTokenCompleted -= handler; tcs.TrySetCanceled(); throw; } return(tcs.Task); }