title: Undefined property: stdClass::$followers_count
body: <p>I am developing a social followers count via Hybrid auth frame work.I am learning this kinda beginer in PHP/MYSQL and API.I don't understand the error why I am getting this.</p>
  
  <p>This is Hybrid auth example code with my followers count code. Help</p>
  
  <pre><code>    &lt;?php
    // start a new session (required for Hybridauth)
    session_start();
  
    // change the following paths if necessary
    $config   = dirname(__FILE__) . '/hybridauth/hybridauth/config.php';
    require_once( "hybridauth/hybridauth/Hybrid/Auth.php" );
  
    try{
      // create an instance for Hybridauth with the configuration file path as parameter
      $hybridauth = new Hybrid_Auth( $config );
  
      // try to authenticate the user with twitter,
      // user will be redirected to Twitter for authentication,
      // if he already did, then Hybridauth will ignore this step and return an instance of the adapter
      $twitter = $hybridauth-&gt;authenticate( "Twitter" );
  
      // get the user profile
      $twitter_user_profile = $twitter-&gt;getUserProfile();
  
      echo "Ohai there! U are connected with: &lt;b&gt;{$twitter-&gt;id}&lt;/b&gt;&lt;br /&gt;";
      echo "As: &lt;b&gt;{$twitter_user_profile-&gt;displayName}&lt;/b&gt;&lt;br /&gt;";
  
     // echo "As: &lt;b&gt;{$twitter_user_profile-&gt;following}&lt;/b&gt;&lt;br /&gt;";
  
      // debug the user profile
  
  
    }
    catch( Exception $e ){
      // Display the recived error,
      // to know more please refer to Exceptions handling section on the userguide
      switch( $e-&gt;getCode() ){
        case 0 : echo "Unspecified error."; break;
        case 1 : echo "Hybriauth configuration error."; break;
        case 2 : echo "Provider not properly configured."; break;
        case 3 : echo "Unknown or disabled provider."; break;
        case 4 : echo "Missing provider application credentials."; break;
        case 5 : echo "Authentification failed. "
                    . "The user has canceled the authentication or the provider refused the connection.";
                 break;
        case 6 : echo "User profile request failed. Most likely the user is not connected "
                    . "to the provider and he should authenticate again.";
                 $twitter-&gt;logout();
                 break;
        case 7 : echo "User not connected to the provider.";
                 $twitter-&gt;logout();
                 break;
        case 8 : echo "Provider does not support this feature."; break;
      }
  
      // well, basically your should not display this to the end user, just give him a hint and move on..
      echo "&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Original error message:&lt;/b&gt; " . $e-&gt;getMessage();
    }
  
  
  require_once 'twitteroauth-master/src/twitteroauth.php';
  require_once 'config.php';
  
  require "twitteroauth-master/vendor/autoload.php";
  
  use Abraham\TwitterOAuth\TwitterOAuth;
  
  
  
  define("CONSUMER_KEY", "*****");
  define("CONSUMER_SECRET", "****");
  define("OAUTH_TOKEN", "*****");
  define("OAUTH_SECRET", "******");
  $username = 'kodeordie'; //Your twitter screen name or page name
  $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_SECRET);
  $followers = $connection-&gt;get('users/show', array('screen_name' =&gt; $username));
  $followers = json_decode($followers,true);
  $f = $followers['followers_count'];
  echo $f;
  ?&gt;
  </code></pre>
  
  <p>Twitteroauth.php</p>
  
  <pre><code>&lt;?php
  
  /*
   * Abraham Williams (abraham@abrah.am) http://abrah.am
   *
   * The first PHP Library to support OAuth for Twitter's REST API.
   */
  
  /**
   * Twitter OAuth class
   */
  class TwitterOAuth {
    /* Contains the last HTTP status code returned. */
    public $http_code;
    /* Contains the last API call. */
    public $url;
    /* Set up the API root URL. */
    public $host = "https://api.twitter.com/1.1/";
    /* Set timeout default. */
    public $timeout = 30;
    /* Set connect timeout. */
    public $connecttimeout = 30; 
    /* Verify SSL Cert. */
    public $ssl_verifypeer = FALSE;
    /* Respons format. */
    public $format = 'json';
    /* Decode returned json data. */
    public $decode_json = TRUE;
    /* Contains the last HTTP headers returned. */
    public $http_info;
    /* Set the useragnet. */
    public $useragent = 'TwitterOAuth v0.2.0-beta2';
    /* Immediately retry the API call if the response was not successful. */
    //public $retry = TRUE;
  
  
  
  
    /**
     * Set API URLS
     */
    function accessTokenURL()  { return 'https://api.twitter.com/oauth/access_token'; }
    function authenticateURL() { return 'https://api.twitter.com/oauth/authenticate'; }
    function authorizeURL()    { return 'https://api.twitter.com/oauth/authorize'; }
    function requestTokenURL() { return 'https://api.twitter.com/oauth/request_token'; }
  
    /**
     * Debug helpers
     */
    function lastStatusCode() { return $this-&gt;http_status; }
    function lastAPICall() { return $this-&gt;last_api_call; }
  
    /**
     * construct TwitterOAuth object
     */
    function __construct($consumer_key, $consumer_secret, $oauth_token = NULL, $oauth_token_secret = NULL) {
      $this-&gt;sha1_method = new OAuthSignatureMethod_HMAC_SHA1();
      $this-&gt;consumer = new OAuthConsumer($consumer_key, $consumer_secret);
      if (!empty($oauth_token) &amp;&amp; !empty($oauth_token_secret)) {
        $this-&gt;token = new OAuthConsumer($oauth_token, $oauth_token_secret);
      } else {
        $this-&gt;token = NULL;
      }
    }
  
  
    /**
     * Get a request_token from Twitter
     *
     * @returns a key/value array containing oauth_token and oauth_token_secret
     */
    function getRequestToken($oauth_callback) {
      $parameters = array();
      $parameters['oauth_callback'] = $oauth_callback; 
      $request = $this-&gt;oAuthRequest($this-&gt;requestTokenURL(), 'GET', $parameters);
      $token = OAuthUtil::parse_parameters($request);
      $this-&gt;token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
      return $token;
    }
  
    /**
     * Get the authorize URL
     *
     * @returns a string
     */
    function getAuthorizeURL($token, $sign_in_with_twitter = TRUE) {
      if (is_array($token)) {
        $token = $token['oauth_token'];
      }
      if (empty($sign_in_with_twitter)) {
        return $this-&gt;authorizeURL() . "?oauth_token={$token}";
      } else {
         return $this-&gt;authenticateURL() . "?oauth_token={$token}";
      }
    }
  
    /**
     * Exchange request token and secret for an access token and
     * secret, to sign API calls.
     *
     * @returns array("oauth_token" =&gt; "the-access-token",
     *                "oauth_token_secret" =&gt; "the-access-secret",
     *                "user_id" =&gt; "9436992",
     *                "screen_name" =&gt; "abraham")
     */
    function getAccessToken($oauth_verifier) {
      $parameters = array();
      $parameters['oauth_verifier'] = $oauth_verifier;
      $request = $this-&gt;oAuthRequest($this-&gt;accessTokenURL(), 'GET', $parameters);
      $token = OAuthUtil::parse_parameters($request);
      $this-&gt;token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
      return $token;
    }
  
    /**
     * One time exchange of username and password for access token and secret.
     *
     * @returns array("oauth_token" =&gt; "the-access-token",
     *                "oauth_token_secret" =&gt; "the-access-secret",
     *                "user_id" =&gt; "9436992",
     *                "screen_name" =&gt; "abraham",
     *                "x_auth_expires" =&gt; "0")
     */  
    function getXAuthToken($username, $password) {
      $parameters = array();
      $parameters['x_auth_username'] = $username;
      $parameters['x_auth_password'] = $password;
      $parameters['x_auth_mode'] = 'client_auth';
      $request = $this-&gt;oAuthRequest($this-&gt;accessTokenURL(), 'POST', $parameters);
      $token = OAuthUtil::parse_parameters($request);
      $this-&gt;token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
      return $token;
    }
  
    /**
     * GET wrapper for oAuthRequest.
     */
    function get($url, $parameters = array()) {
      $response = $this-&gt;oAuthRequest($url, 'GET', $parameters);
      if ($this-&gt;format === 'json' &amp;&amp; $this-&gt;decode_json) {
        return json_decode($response);
      }
      return $response;
    }
  
    /**
     * POST wrapper for oAuthRequest.
     */
    function post($url, $parameters = array()) {
      $response = $this-&gt;oAuthRequest($url, 'POST', $parameters);
      if ($this-&gt;format === 'json' &amp;&amp; $this-&gt;decode_json) {
        return json_decode($response);
      }
      return $response;
    }
  
    /**
     * DELETE wrapper for oAuthReqeust.
     */
    function delete($url, $parameters = array()) {
      $response = $this-&gt;oAuthRequest($url, 'DELETE', $parameters);
      if ($this-&gt;format === 'json' &amp;&amp; $this-&gt;decode_json) {
        return json_decode($response);
      }
      return $response;
    }
  
    /**
     * Format and sign an OAuth / API request
     */
    function oAuthRequest($url, $method, $parameters) {
      if (strrpos($url, 'https://') !== 0 &amp;&amp; strrpos($url, 'http://') !== 0) {
        $url = "{$this-&gt;host}{$url}.{$this-&gt;format}";
      }
      $request = OAuthRequest::from_consumer_and_token($this-&gt;consumer, $this-&gt;token, $method, $url, $parameters);
      $request-&gt;sign_request($this-&gt;sha1_method, $this-&gt;consumer, $this-&gt;token);
      switch ($method) {
      case 'GET':
        return $this-&gt;http($request-&gt;to_url(), 'GET');
      default:
        return $this-&gt;http($request-&gt;get_normalized_http_url(), $method, $request-&gt;to_postdata());
      }
    }
  
    /**
     * Make an HTTP request
     *
     * @return API results
     */
    function http($url, $method, $postfields = NULL) {
      $this-&gt;http_info = array();
      $ci = curl_init();
      /* Curl settings */
      curl_setopt($ci, CURLOPT_USERAGENT, $this-&gt;useragent);
      curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this-&gt;connecttimeout);
      curl_setopt($ci, CURLOPT_TIMEOUT, $this-&gt;timeout);
      curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);
      curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:'));
      curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this-&gt;ssl_verifypeer);
      curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader'));
      curl_setopt($ci, CURLOPT_HEADER, FALSE);
  
      switch ($method) {
        case 'POST':
          curl_setopt($ci, CURLOPT_POST, TRUE);
          if (!empty($postfields)) {
            curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
          }
          break;
        case 'DELETE':
          curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');
          if (!empty($postfields)) {
            $url = "{$url}?{$postfields}";
          }
      }
  
      curl_setopt($ci, CURLOPT_URL, $url);
      $response = curl_exec($ci);
      $this-&gt;http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
      $this-&gt;http_info = array_merge($this-&gt;http_info, curl_getinfo($ci));
      $this-&gt;url = $url;
      curl_close ($ci);
      return $response;
    }
  
    /**
     * Get the header info to store.
     */
    function getHeader($ch, $header) {
      $i = strpos($header, ':');
      if (!empty($i)) {
        $key = str_replace('-', '_', strtolower(substr($header, 0, $i)));
        $value = trim(substr($header, $i + 2));
        $this-&gt;http_header[$key] = $value;
      }
      return strlen($header);
    }
  }
  </code></pre>