title: Get messages in users' GMail inbox
body: <p>In the code below I am signing in, authorising the app, and getting console output via the GMail API. I believe I am getting the threads and thread IDs, but I am not seeing the messages in the console.</p>
  
  <p>I am not getting any errors and I am getting output, just what seems like keys with no values.</p>
  
  <p>Here is what the console output looks like: <img src="https://i.stack.imgur.com/zQiKR.png" alt="enter image description here"></p>
  
  <p>Here is the code:</p>
  
  <pre><code>var CLIENT_ID = 'YOUR_CLIENT_ID';
  var SCOPES = ['https://www.googleapis.com/auth/gmail.readonly'];
  var USER = 'me';
  
    /**
     * Called when the client library is loaded to start the auth flow.
     */
    function handleClientLoad() {
      window.setTimeout(checkAuth, 1);
    }
  
    /**
     * Check if the current user has authorized the application.
     */
    function checkAuth() {
      gapi.auth.authorize(
          {'client_id': CLIENT_ID, 'scope': SCOPES, 'immediate': true},
          handleAuthResult);
    }
  
    /**
     * Called when authorization server replies.
     *
     * @param {Object} authResult Authorization result.
     */
    function handleAuthResult(authResult) {
      var authButton = document.getElementById('authorizeButton');
      var outputNotice = document.getElementById('notice');
      authButton.style.display = 'none';
      outputNotice.style.display = 'block';
      if (authResult &amp;&amp; !authResult.error) {
        // Access token has been successfully retrieved, requests can be sent to the API.
        gapi.client.load('gmail', 'v1', function() {
          listThreads(USER, function(resp) {
            var threads = resp.threads;
            for (var i = 0; i &lt; threads.length; i++) {
              var thread = threads[i];
              console.log(thread);
              console.log(thread['id']);
            }
          });
        });
      } else {
        // No access token could be retrieved, show the button to start the authorization flow.
        authButton.style.display = 'block';
        outputNotice.style.display = 'none';
        authButton.onclick = function() {
            gapi.auth.authorize(
                {'client_id': CLIENT_ID, 'scope': SCOPES, 'immediate': false},
                handleAuthResult);
        };
      }
    }
  
  
    /**
     * Get a page of Threads.
     *
     * @param  {String} userId User's email address. The special value 'me'
     * can be used to indicate the authenticated user.
     * @param  {Function} callback Function called when request is complete.
     */
    function listThreads(userId, callback) {
      var request = gapi.client.gmail.users.threads.list({
        'userId': userId
      });
      request.execute(callback);
    }
  </code></pre>
  
  <p><strong>How can I retrieve the from address, subject, and body of the messages? with the GMAIL API in js</strong></p>
  
  <p>**Update: What I am currently working with: **</p>
  
  <pre><code>listThreads('me', function(dataResult){
      $.each(dataResult, function(i, item){
          getThread('me', item.id, function(dataMessage){
              console.log(dataMessage);
              var temp = dataMessage.messages[0].payload.headers;
              $.each(temp, function(j, dataItem){
                  if(dataItem.name == 'From'){
                      console.log(dataItem.value);
                  }
              });
           });
        });
     });
  </code></pre>
  
  <p>When I log dataMessage, I get a 400 error, ' id required '.
  When I log dataItem.value, I get a dataMessage.messages is undefined and can not have an index of 0.</p>
  
  <p>I'd greatly appreciate help in getting this working!</p>