title: Create a new user in Azure Active Directory (B2C) with Graph API, using http post request
body: <p>I have previously been adding users programmatically using Active Directory Authentication Library (ADAL), but now I need to define "signInNames" (= users email), and that doesn't seem to be possible with ADAL (please tell me if im wrong). </p>
  
  <p>Now I'm trying to add a new user (local account) programmatically  using HTTP POST, following <a href="https://msdn.microsoft.com/library/azure/ad/graph/api/users-operations#CreateLocalAccountUser" rel="noreferrer">the documentation on MSDN</a>. </p>
  
  <pre><code>//Get access token (using ADAL)
  var authenticationContext = new AuthenticationContext(AuthString, false);
  var clientCred = new ClientCredential(ClientId, ClientSecret);
  var authenticationResult = authenticationContext.AcquireTokenAsync(ResourceUrl, clientCred);
  var token = authenticationResult.Result.AccessToken;
  
  
  //HTTP POST CODE
  const string mail = "new@email.com";
  // Create a new user object.
  var user = new CustomUser
  {
      accountEnabled = true,
      country = "MS",
      creationType = "LocalAccount",
      displayName = mail,
      passwordPolicies = "DisablePasswordExpiration,DisableStrongPassword",
      passwordProfile = new passwordProfile { password = "jVPmEm)6Bh", forceChangePasswordNextLogin = true },
      signInNames = new signInNames { type = "emailAddress", value = mail }
  };
  
  var url = "https://graph.windows.net/" + TenantId + "/users?api-version=1.6";
  
  var jsonObject = JsonConvert.SerializeObject(user);
  
  using (var client = new HttpClient())
  {
      client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
  
      var response = client.PostAsync(url,
          new StringContent(JsonConvert.SerializeObject(user).ToString(),
              Encoding.UTF8, "application/json"))
              .Result;
  
      if (response.IsSuccessStatusCode)
      {
          dynamic content = JsonConvert.DeserializeObject(
              response.Content.ReadAsStringAsync()
              .Result);
  
          // Access variables from the returned JSON object
          var appHref = content.links.applications.href;
      }
  }
  </code></pre>
  
  <p>But i have no success, getting this response:</p>
  
  <pre><code>{StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content:....}
  </code></pre>
  
  <p>Any ideas what i should do? I succeeded using Powershell-script, but I need to do this in my C# app.</p>