code: function _ParseTokenResponse(err, body, callback)
  	{
  		if (err)
  		{
  			if (callback) callback("Request error: " + err);
  			return;
  		}
  
  		// try to parse result
  		var responseJSON;
  		try
  		{
  			responseJSON = JSON.parse(body);
  		}
  		catch (JSONerror)
  		{
  			if (callback) callback("JSON Parse error: " + JSONerror);
  			return;
  		}
  
  		// check server response for error
  		if (responseJSON.error_description)
  		{
  			if (callback) callback("Server response error " + responseJSON.error_code + ": " + responseJSON.error_description);
  			return;
  		}
  
  		// check we got an access token
  		if (!responseJSON.access_token)
  		{
  			if (callback) callback("No access token received from PSN OAuth");
  			return;
  		}
  
  		Log("Got successful OAuth result");
  
  		// store our new tokens
  		auth_obj.access_token = 	responseJSON.access_token;
  		auth_obj.refresh_token = 	responseJSON.refresh_token;
  		// calculate expire time of these tokens (shave off half a minute)
  		auth_obj.expire_time =		(new Date().getTime()) + ((responseJSON.expires_in - 30) * 1000);
  
  		// save the data object
  		DoSave(function()
  			{
  				// return no error
  				if (callback) callback(false);
  			}
  		);
  	}
docs: Helper function to parse OAuth responses (to save code duplication)