title: OneLogin Create Session Login Token API returns status 400 with message: Bad Request
body: <p>I am developing a C# application which needs to use the onelogin API to retrieve a session token. I am able to authenticate and and create a token with the following code:</p>
  
  <pre><code>WebRequest Authrequest = WebRequest.Create("https://api.us.onelogin.com/auth/oauth2/token");
  
  Authrequest.Method = "POST";
  Authrequest.ContentType = "application/json";
  Authrequest.Headers.Add("cache-control", "no-cache");
  Authrequest.Headers.Add("Authorization: client_id:XXXXXXX7bbf2c50200d8175206f664dc28ffd3ec66eef0bfedb68c3366420dc, client_secret:XXXXXXXXXX6ba2802187feb23f6450c6812b8e6639361d24aa83f12010f ");
  
  
  using (var streamWriter = new StreamWriter(Authrequest.GetRequestStream()))
  {
      string Authjson = new JavaScriptSerializer().Serialize(new
      {
  
          grant_type = "client_credentials"
  
      });
  
      streamWriter.Write(Authjson);
  }
  WebResponse AuthReponse;
  AuthReponse = Authrequest.GetResponse();
  
  Stream receiveStream = AuthReponse.GetResponseStream ();
  
  // Pipes the stream to a higher level stream reader with the required encoding format. 
  StreamReader readStream = new StreamReader (receiveStream);
  
  
  JObject incdata = JObject.Parse(readStream.ReadToEnd());
  string sToken = incdata["data"][0]["access_token"].Value&lt;string&gt;();
  
  AuthReponse.Close();  
  </code></pre>
  
  <p>However, when running the Create Session Login Token with the following code, it only returns a 400 error, and the message has no detail. Just Bad Request:</p>
  
  <pre><code>//Get the session token for the specified user, using the token recieved from previous web request
  
  WebRequest request =     WebRequest.Create("https://api.us.onelogin.com/api/1/login/auth");
  request.Method = "POST";
  request.ContentType = "application/json";
  request.Headers.Add("authorization", "bearer:" + sToken);
  
  
  using (var streamWriter2 = new StreamWriter(request.GetRequestStream()))
  {
  
      string json = JsonConvert.SerializeObject(new
      {
  
          username_or_email = sUsername,
          password = sPassword,
          subdomain = "comp-alt-dev"
  
  
      });
  
      streamWriter2.Write(json);
  }
  
  
  WebResponse response;            
  response = request.GetResponse();
  
  
  string streamText = "";
  var responseStream = response.GetResponseStream();
  using (responseStream)
  {
      var streamReader = new StreamReader(responseStream);
      using (streamReader)
      {
          streamText = streamReader.ReadToEnd();
  
          streamReader.Close();
          //
      }
      responseStream.Close();
  }
  </code></pre>
  
  <p>Any ideas?</p>
  
  <p>-Thank you</p>