/// <summary>
 /// Constructor taking the underlying TableEntity object that is read/written in Azure Storage
 /// </summary>
 /// <param name="credential"></param>
 internal OAuth2AzureCredential(OAuth2AzureCredentialData credential)
 {
     this.credential = credential;
 }
        /// <summary>
        /// Creates a new consumer key and consumer secret pair for the specified username.
        /// You may also store extra name value pairs as credential properties which can be accessed when the credential is retrieved.
        /// </summary>
        /// <param name="username"></param>
        /// <param name="properties"></param>
        /// <returns></returns>
        public override OAuth2Credential CreateCredential(string username, Dictionary<string, string> properties)
        {
            string gKey = Guid.NewGuid().ToString();
            string consumer_Key = Convert.ToBase64String(Encoding.UTF8.GetBytes(gKey));
            string gSecret = Guid.NewGuid().ToString();
            string consumer_Secret = Convert.ToBase64String(Encoding.UTF8.GetBytes(gSecret));
            OAuth2AzureCredentialData credential = new OAuth2AzureCredentialData(consumer_Key, consumer_Secret);
            credential.username = username;
            credential.properties = properties;

            OAuth2CredentialReference reference = new OAuth2CredentialReference(username, consumer_Key, consumer_Secret);
            try
            {
                TableOperation op = TableOperation.InsertOrReplace(credential);
                table.Execute(op);

                TableOperation op2 = TableOperation.InsertOrReplace(reference);
                table.Execute(op2);
                return new OAuth2AzureCredential(credential);
            }
            catch (Exception)
            {
                return null;
            }
        }