Q: Invalid json in service response I'm trying to get my profile info using the PHP API, yet it doesn't seem to be working in the last couple days.
My code is as follows:
<?php
try {
    $client_id = '****************.apps.googleusercontent.com';
    $client_secret = '*********************';
    $redirect_uri = '**********************';
    $google_key = '***************';

    $client = new Google_Client();
    $client->setClientId($client_id);
    $client->setClientSecret($client_secret);
    $client->setRedirectUri($redirect_uri);
    $client->setDeveloperKey($google_key);
    $client->setAccessType('offline');
    $client->setScopes(array('https://www.googleapis.com/auth/userinfo.email','https://www.googleapis.com/auth/userinfo.profile'));
    $plus = new Google_Service_Plus($client);

    if(isset($_GET['code'])) {
        $client->authenticate($_GET['code']);
        $accessToken = $client->getAccessToken();
        $refreshToken = json_decode($accessToken)->refresh_token;
        setcookie('refresh_token', $refreshToken, (time()+60*60*24*30));
        setcookie('access_token', $accessToken, (time()+60*60*24*30));
        header('Location: ./');
        exit();
    }

    if(isset($_COOKIE['access_token']) && $_COOKIE['access_token']) {
        $refreshToken = json_decode($_COOKIE['access_token'])->refresh_token;
        $accessToken = $_COOKIE['access_token'];
        setcookie('access_token', $accessToken, (time()+60*60*24*30));
        $client->setAccessToken($_COOKIE['access_token']);
    } else {
        $authUrl = $client->createAuthUrl();
    }

    if($client->getAccessToken()) {
        $accessToken = $client->getAccessToken();
        setcookie('access_token', $accessToken, (time()+60*60*24*30));
        if(isset($plus)){
            $userInfo = $plus->people->get('me');
        }
    }

    if($client->isAccessTokenExpired() && isset($userInfo)){
        $refreshToken = $_COOKIE['refresh_token'];
        $client->refreshToken($refreshToken);
        $newtoken = $client->getAccessToken();
        setcookie('access_token', $newtoken, (time()+60*60*24*30));
        header('Location: ./');
        exit();
    }

} catch (Google_Service_Exception $gse){
    error_log($gse, 0);
} catch (Google_Auth_Exception $gae){
    error_log($gae, 0);
}
?>

I will be using a database soon, but i'd like to get it working with cookies first. The error I'm getting is as follows:
[05-Aug-2015 20:40:36 Europe/London] exception 'Google_Service_Exception' with message 'Error calling GET https://www.googleapis.com/plus/v1/people/me?key=**********************: (403) ‹' in /home5/commodit/public_html/workflow/src/Google/Http/REST.php:110
Stack trace:
#0 /home5/commodit/public_html/workflow/src/Google/Http/REST.php(62): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request), Object(Google_Client))
#1 [internal function]: Google_Http_REST::doExecute(Object(Google_Client), Object(Google_Http_Request))
#2 /home5/commodit/public_html/workflow/src/Google/Task/Runner.php(174): call_user_func_array(Array, Array)
#3 /home5/commodit/public_html/workflow/src/Google/Http/REST.php(46): Google_Task_Runner->run()
#4 /home5/commodit/public_html/workflow/src/Google/Client.php(593): Google_Http_REST::execute(Object(Google_Client), Object(Google_Http_Request))
#5 /home5/commodit/public_html/workflow/src/Google/Service/Resource.php(237): Google_Client->execute(Object(Google_Http_Request))
#6 /home5/commodit/public_html/workflow/src/Google/Service/Plus.php(562): Google_Service_Resource->call('get', Array, 'Google_Service_...')
#7 /home5/commodit/public_html/workflow/includes/head.php(87): Google_Service_Plus_People_Resource->get('me')
#8 /home5/commodit/public_html/workflow/index.php(4): include('/home5/commodit...')
#9 {main}

I also get a "Response not valid json" if i try to use OAuth2 instead of Google Plus as the service.
[05-Aug-2015 20:46:02 Europe/London] exception 'Google_Service_Exception' with message 'Invalid json in service response: ‹' in /home5/commodit/public_html/workflow/src/Google/Http/REST.php:125
Stack trace:
#0 /home5/commodit/public_html/workflow/src/Google/Http/REST.php(62): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request), Object(Google_Client))
#1 [internal function]: Google_Http_REST::doExecute(Object(Google_Client), Object(Google_Http_Request))
#2 /home5/commodit/public_html/workflow/src/Google/Task/Runner.php(174): call_user_func_array(Array, Array)
#3 /home5/commodit/public_html/workflow/src/Google/Http/REST.php(46): Google_Task_Runner->run()
#4 /home5/commodit/public_html/workflow/src/Google/Client.php(593): Google_Http_REST::execute(Object(Google_Client), Object(Google_Http_Request))
#5 /home5/commodit/public_html/workflow/src/Google/Service/Resource.php(237): Google_Client->execute(Object(Google_Http_Request))
#6 /home5/commodit/public_html/workflow/src/Google/Service/Oauth2.php(175): Google_Service_Resource->call('get', Array, 'Google_Service_...')
#7 /home5/commodit/public_html/workflow/includes/head.php(89): Google_Service_Oauth2_Userinfo_Resource->get()
#8 /home5/commodit/public_html/workflow/index.php(4): include('/home5/commodit...')
#9 {main}

Thanks for any help!
Bethany
P.S - I have also tried the "opt_params" variable but it still says invalid JSON :(

A: I suggest to check the Google/Config.php file, there are several default parameters that can be adjust to get solution for different problems.
In my case i was also receiving an invalid-json-in-service-response, i was sure of correct credential settings, i tryed to run the URL that was passed to Google API with GET protocol and query string, and always had full plain text in json format answer, so i looked at "disable_gzip" parameter and modifiy it to see what was the behaviour if changed.
'Google_Http_Request' => array(
      // Disable the use of gzip on calls if set to true. Defaults to false.
      'disable_gzip' => self::GZIP_DISABLED, //self::GZIP_ENABLED,

      // We default gzip to disabled on uploads even if gzip is otherwise
      // enabled, due to some issues seen with small packet sizes for uploads.
      // Please test with this option before enabling gzip for uploads in
      // a production environment.
      'enable_gzip_for_uploads' => self::GZIP_UPLOADS_DISABLED,
    ),

You may set different values for a Google_Client Config, Class Attribute invoking the defined method.
public function setClassConfig($class, $config, $value = null)

