irazasyed / laravel-gamp

📊 Laravel Google Analytics Measurement Protocol Package
https://bit.ly/laravel-gamp
MIT License
330 stars 32 forks source link

InvalidPayloadDataException when using Dependency Injection #16

Closed benargo closed 6 years ago

benargo commented 7 years ago

Laravel version: v5.4.17 Package version: v1.2.0

I seem to be getting an InvalidPayloadDataException when resolving this package via the service container.

The error seems to be that the TrackingId and ProtocolVersion are not being merged in when the service is resolved. Taking a dump of the resulting Analytics instance it seems these options are missing. However, everything is working fine if I use the Facade.

This has really stumped me. I am using the Facade as a workaround, but I would prefer to inject the service where possible.

Any thoughts would be greatly appreciated.

Usage Example

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use TheIconic\Tracking\GoogleAnalytics\Analytics;

class FooController extends Controller
{
    /**
     * Set up the controller.
     *
     * @param  \TheIconic\Tracking\GoogleAnalytics\Analytics  $analytics
     * @return void
     */
    public function __construct(Analytics $analytics)
    {
        // See below for result
        dd($analytics);
    }
}

Analytics instance

Analytics {#214 ▼
  #uriScheme: "http"
  #isAsyncRequest: false
  #endpoint: "://www.google-analytics.com/collect"
  #debugEndpoint: "://www.google-analytics.com/debug/collect"
  #isDebug: false
  #singleParameters: []
  #compoundParametersCollections: []
  #httpClient: null
  #availableParameters: array:90 [▼
    "ApplicationId" => "AppTracking\ApplicationId"
    "ApplicationInstallerId" => "AppTracking\ApplicationInstallerId"
    "ApplicationName" => "AppTracking\ApplicationName"
    "ApplicationVersion" => "AppTracking\ApplicationVersion"
    "ExperimentId" => "ContentExperiments\ExperimentId"
    "ExperimentVariant" => "ContentExperiments\ExperimentVariant"
    "ContentGroup" => "ContentGrouping\ContentGroup"
    "DocumentHostName" => "ContentInformation\DocumentHostName"
    "DocumentLocationUrl" => "ContentInformation\DocumentLocationUrl"
    "DocumentPath" => "ContentInformation\DocumentPath"
    "DocumentTitle" => "ContentInformation\DocumentTitle"
    "LinkId" => "ContentInformation\LinkId"
    "ScreenName" => "ContentInformation\ScreenName"
    "CustomDimension" => "CustomDimensionsMetrics\CustomDimension"
    "CustomMetric" => "CustomDimensionsMetrics\CustomMetric"
    "CurrencyCode" => "Ecommerce\CurrencyCode"
    "ItemCategory" => "Ecommerce\ItemCategory"
    "ItemCode" => "Ecommerce\ItemCode"
    "ItemName" => "Ecommerce\ItemName"
    "ItemPrice" => "Ecommerce\ItemPrice"
    "ItemQuantity" => "Ecommerce\ItemQuantity"
    "Affiliation" => "EnhancedEcommerce\Affiliation"
    "CheckoutStep" => "EnhancedEcommerce\CheckoutStep"
    "CheckoutStepOption" => "EnhancedEcommerce\CheckoutStepOption"
    "CouponCode" => "EnhancedEcommerce\CouponCode"
    "Product" => "EnhancedEcommerce\Product"
    "ProductAction" => "EnhancedEcommerce\ProductAction"
    "ProductActionList" => "EnhancedEcommerce\ProductActionList"
    "ProductCollection" => "EnhancedEcommerce\ProductCollection"
    "ProductImpression" => "EnhancedEcommerce\ProductImpression"
    "ProductImpressionCollection" => "EnhancedEcommerce\ProductImpressionCollection"
    "ProductImpressionListName" => "EnhancedEcommerce\ProductImpressionListName"
    "Promotion" => "EnhancedEcommerce\Promotion"
    "PromotionAction" => "EnhancedEcommerce\PromotionAction"
    "PromotionCollection" => "EnhancedEcommerce\PromotionCollection"
    "Revenue" => "EnhancedEcommerce\Revenue"
    "Shipping" => "EnhancedEcommerce\Shipping"
    "Tax" => "EnhancedEcommerce\Tax"
    "TransactionId" => "EnhancedEcommerce\TransactionId"
    "EventAction" => "Event\EventAction"
    "EventCategory" => "Event\EventCategory"
    "EventLabel" => "Event\EventLabel"
    "EventValue" => "Event\EventValue"
    "ExceptionDescription" => "Exceptions\ExceptionDescription"
    "IsExceptionFatal" => "Exceptions\IsExceptionFatal"
    "AnonymizeIp" => "General\AnonymizeIp"
    "CacheBuster" => "General\CacheBuster"
    "DataSource" => "General\DataSource"
    "ProtocolVersion" => "General\ProtocolVersion"
    "QueueTime" => "General\QueueTime"
    "TrackingId" => "General\TrackingId"
    "HitType" => "Hit\HitType"
    "NonInteractionHit" => "Hit\NonInteractionHit"
    "GeographicalOverride" => "Session\GeographicalOverride"
    "IpOverride" => "Session\IpOverride"
    "SessionControl" => "Session\SessionControl"
    "UserAgentOverride" => "Session\UserAgentOverride"
    "SocialAction" => "SocialInteractions\SocialAction"
    "SocialActionTarget" => "SocialInteractions\SocialActionTarget"
    "SocialNetwork" => "SocialInteractions\SocialNetwork"
    "DocumentEncoding" => "SystemInfo\DocumentEncoding"
    "FlashVersion" => "SystemInfo\FlashVersion"
    "JavaEnabled" => "SystemInfo\JavaEnabled"
    "ScreenColors" => "SystemInfo\ScreenColors"
    "ScreenResolution" => "SystemInfo\ScreenResolution"
    "UserLanguage" => "SystemInfo\UserLanguage"
    "ViewportSize" => "SystemInfo\ViewportSize"
    "ContentLoadTime" => "Timing\ContentLoadTime"
    "DnsTime" => "Timing\DnsTime"
    "DomInteractiveTime" => "Timing\DomInteractiveTime"
    "PageDownloadTime" => "Timing\PageDownloadTime"
    "PageLoadTime" => "Timing\PageLoadTime"
    "RedirectResponseTime" => "Timing\RedirectResponseTime"
    "ServerResponseTime" => "Timing\ServerResponseTime"
    "TcpConnectTime" => "Timing\TcpConnectTime"
    "UserTimingCategory" => "Timing\UserTimingCategory"
    "UserTimingLabel" => "Timing\UserTimingLabel"
    "UserTimingTime" => "Timing\UserTimingTime"
    "UserTimingVariableName" => "Timing\UserTimingVariableName"
    "CampaignContent" => "TrafficSources\CampaignContent"
    "CampaignId" => "TrafficSources\CampaignId"
    "CampaignKeyword" => "TrafficSources\CampaignKeyword"
    "CampaignMedium" => "TrafficSources\CampaignMedium"
    "CampaignName" => "TrafficSources\CampaignName"
    "CampaignSource" => "TrafficSources\CampaignSource"
    "DocumentReferrer" => "TrafficSources\DocumentReferrer"
    "GoogleAdwordsId" => "TrafficSources\GoogleAdwordsId"
    "GoogleDisplayAdsId" => "TrafficSources\GoogleDisplayAdsId"
    "ClientId" => "User\ClientId"
    "UserId" => "User\UserId"
  ]
}

Stack Trace

[2017-08-14 16:57:43] local.ERROR: TheIconic\Tracking\GoogleAnalytics\Exception\InvalidPayloadDataException: Minimum required parameters not met for payload data, the following must be set: ProtocolVersion, TrackingId and ClientId in /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/theiconic/php-ga-measurement-protocol/src/Analytics.php:568
Stack trace:
#0 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/theiconic/php-ga-measurement-protocol/src/Analytics.php(848): TheIconic\Tracking\GoogleAnalytics\Analytics->sendHit('sendEvent')
#1 /Users/b-argo/Dropbox/Projects/majic-lamp/app/Http/Controllers/Promotions/RedeemController.php(97): TheIconic\Tracking\GoogleAnalytics\Analytics->__call('sendEvent', Array)
#2 /Users/b-argo/Dropbox/Projects/majic-lamp/app/Http/Controllers/Promotions/RedeemController.php(77): Genii\Http\Controllers\Promotions\RedeemController->redirect(Object(Genii\Models\Promotions\Promotion))
#3 [internal function]: Genii\Http\Controllers\Promotions\RedeemController->handle(Object(Genii\Models\Promotions\Promotion))
#4 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(55): call_user_func_array(Array, Array)
#5 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(44): Illuminate\Routing\Controller->callAction('handle', Array)
#6 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Route.php(203): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Genii\Http\Controllers\Promotions\RedeemController), 'handle')
#7 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Route.php(160): Illuminate\Routing\Route->runController()
#8 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Router.php(559): Illuminate\Routing\Route->run()
#9 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#10 /Users/b-argo/Dropbox/Projects/majic-lamp/app/Http/Middleware/HttpsProtocol.php(27): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#11 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Genii\Http\Middleware\HttpsProtocol->handle(Object(Illuminate\Http\Request), Object(Closure))
#12 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#13 /Users/b-argo/Dropbox/Projects/majic-lamp/app/Http/Middleware/Sandbox.php(48): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#14 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Genii\Http\Middleware\Sandbox->handle(Object(Illuminate\Http\Request), Object(Closure))
#15 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#16 /Users/b-argo/Dropbox/Projects/majic-lamp/app/Http/Middleware/Auth/Authenticate.php(82): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#17 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Genii\Http\Middleware\Auth\Authenticate->handle(Object(Illuminate\Http\Request), Object(Closure))
#18 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#19 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#20 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#21 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#22 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(65): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#23 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#24 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#25 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#26 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#27 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#28 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#29 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#30 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#31 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#32 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#33 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#34 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(59): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#35 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#36 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#37 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#38 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Router.php(561): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#39 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Router.php(520): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#40 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Router.php(498): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#41 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(174): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#42 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#43 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(30): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#44 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#45 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#46 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(30): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#47 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#48 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#49 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#50 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))
#51 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#52 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#53 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#54 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#55 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#56 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(149): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#57 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#58 /Users/b-argo/Dropbox/Projects/majic-lamp/public/index.php(51): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#59 /Users/b-argo/.composer/vendor/laravel/valet/server.php(133): require('/Users/b-argo/D...')
#60 {main}  
irazasyed commented 6 years ago

Sorry for the long delay. I just noticed this issue right now. It should be fixed in the latest release. Please update and test it. Thanks!

benargo commented 6 years ago

Confirmed, thanks for your help!