2016-07-21 25 views
1

Ich habe Probleme beim Abrufen von Daten (Profilliste um spezifisch zu sein) von google analytics. Die Zugangsdaten wie client_id, secret etc sind vorhanden und erlauben dem Benutzer, sich erfolgreich anzumelden, aber ich bin im nächsten Schritt fest, wo ich die Liste der Profile (Liste der Websites) abholen muss. Ich ging durch die offiziellen Dokumente wie pro Google Views (Profiles): list aber während ich es versuchen, ich erhalte eine Fehlermeldung:Fehler: Nicht definierte Eigenschaft beim Abrufen von Daten aus Google Analytics

Undefined property: App\Http\Controllers\UserController::$analytics

die detaillierte Fehler:

in UserController.php line 84 at 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

verstehe ich es ein Fehler, wenn Ich versuche, die Daten zu holen, aber dann verstehe ich nicht wirklich, wie ich das machen soll. Hat jemand eine Idee? Bitte helfen Sie!

hier ist der 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, get details from 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 your user with response data 

      return User::create([ 
       'name' => $guser->name, 
       'email' => $guser->email, 
      ]); 
     } 

     //LINE NO 84 is below: 
     $profiles = $this->analytics->management_profiles 
      ->listManagementProfiles(); 
     $accounts = $accountsObject->getItems(); 

     return $accounts; 
     //return redirect()->route('user.glist'); 
    } else 
    { 
     //For Guest user, get google login url 
    } 
    } 
} 

Antwort

1

Sie rufen $this->analytics aber nirgends Sie die Eigenschaft analytics für die UserController Klasse definieren. Ich bin mir nicht sicher, was in der Elternklasse Controller definiert ist, aber ich bin mir ziemlich sicher, dass es nichts mit dem Analytics-Serviceobjekt zu tun hat.

Sie müssen das Objekt Google_Service_Analytics instanziieren.

// Create an authorized analytics service object. 
$analytics = new Google_Service_Analytics($gclient); 

Siehe die Hello Analytics guide für Details.

+0

oh ja, das habe ich verpasst. Vielen Dank! – NewBee