i'm facing problems fetching data (profile list specific) google analytics
. credentials client_id
, secret etc in place , allow user login successfully, i'm stuck in next step need fetch list of profiles (list of websites). did go through official docs per google views (profiles): list while try it, error:
undefined property: app\http\controllers\usercontroller::$analytics
the detailed error:
in usercontroller.php line 84 @ handleexceptions->handleerror('8', 'undefined property: app\http\controllers\usercontroller::$analytics', 'c:\xampp\htdocs\laravel projects\testapp\app\http\controllers\usercontroller.php', '84', array('request' => object(request), 'google_redirect_url' => 'http://localhost:8000/glogin', 'gclient' => object(google_client), 'google_oauthv2' => object(google_service_oauth2), 'guser' => null, 'user' => object(user), 'token' => array('access_token' => 'token goes here', 'token_type' => 'bearer', 'expires_in' => '3600', 'id_token' => 'id_token goes here', 'created' => 'created data goes here'))) in usercontroller.php line 84
i understand there's error when try fetch data, don't understand how should doing that. has idea? please help!
here's controller
class usercontroller extends controller { public function googlelogin(request $request) { $google_redirect_url = route('glogin'); $gclient = new \google_client(); $gclient->setapplicationname(config('services.google.app_name')); $gclient->setclientid(config('services.google.client_id')); $gclient->setclientsecret(config('services.google.client_secret')); $gclient->setredirecturi($google_redirect_url); $gclient->setdeveloperkey(config('services.google.api_key')); $gclient->addscope(\google_service_analytics::analytics_readonly); $gclient->addscope("email"); $gclient->addscope("profile"); $gclient->setaccesstype("offline"); $google_oauthv2 = new \google_service_oauth2($gclient); if ($request->get('code')){ $gclient->authenticate($request->get('code')); $request->session()->put('token', $gclient->getaccesstoken()); } if ($request->session()->get('token')) { $gclient->setaccesstoken($request->session()->get('token')); } if ($gclient->getaccesstoken()) { //for logged in user, details google using access token $guser = $google_oauthv2->userinfo->get(); $request->session()->put('name', $guser['name']); if ($user =user::where('email',$guser['email'])->first()) { }else{ //register user response data return user::create([ 'name' => $guser->name, 'email' => $guser->email, ]); } //line no 84 below: $profiles = $this->analytics->management_profiles ->listmanagementprofiles(); $accounts = $accountsobject->getitems(); return $accounts; //return redirect()->route('user.glist'); } else { //for guest user, google login url } } }
you calling $this->analytics
define property analytics
usercontroller
class. not sure defined in parent class controller
pretty sure agnostic of analytics service object.
you need instantiate google_service_analytics
object.
// create authorized analytics service object. $analytics = new google_service_analytics($gclient);
see hello analytics guide details.
Comments
Post a Comment