2015-06-02 9 views
11

Laravel 5, Socialite, und Google/Apiclient-Pakete.Laravel Socialite + Making API-Aufrufe nach dem Login

Quellcode: https://github.com/svpernova09/meatings

Ich habe Persönlichkeit des öffentlichen Lebens der Arbeit mit Google fein für die Anmeldung Benutzer in

Ich versuche, einen API-Aufruf in einer anderen Methode, um Kalenderereignisse zu holen, wie der angemeldete Benutzer. . Ich bleibe bei den Token, die ich benutzen soll.

Der Fehler Ich erhalte ist:

"Fehler": "invalid_grant",

"ERROR_DESCRIPTION": "Code wurde bereits eingelöst."

My Methode:

public function show($user_id) 
{ 
    $user = $this->user->find($user_id); 

    $client = new Google_Client(); 
    $client->setClientId(env('GOOGLE_CLIENT_ID')); 
    $client->setClientSecret(env('GOOGLE_CLIENT_SECRET')); 
    $client->setRedirectUri(env('GOOGLE_CALLBACK_URL')); 

    $client->authenticate($user->code); 
    $service = new Google_Service_Calendar($client); 

    $calendarId = $user->calendar_id; 
    $optParams = array(
     'maxResults' => 5, 
     'orderBy' => 'startTime', 
     'singleEvents' => TRUE, 
     'timeMin' => date('c'), 
    ); 
    $results = $service->events->listEvents($calendarId, $optParams); 
    $events = []; 
    if (count($results->getItems()) > 0) { 
     foreach ($results->getItems() as $event) { 
      $events[] = $event; 
     } 
    } 

    return view('users.calendar')->with('events', $events); 
} 

Laravel Die Ausgabe ist:

Google_Auth_Exception in OAuth2.php Leitung 127: Fehler beim Abrufen OAuth2 Zugriffstoken, Meldung: 'invalid_grant'

$ user-code sieht wie folgt aus: 4/hfPzDrOHyaEv3asdfadsfasdfdfw2nXIl0rt2boUpGj7h M.Um5wPgCeasdfasdfafd1t6qxkmwI

Jede Anleitung wäre großartig. Ich komme nirgendwo mit den Google Guides.

+0

An diesem Punkt sind Sie nicht bereits authentifiziert? Es besagt, dass der Code bereits eingelöst wurde und Sie bereits ein Zugriffs-Token haben. –

+0

Ja, der Benutzer ist bereits authentifiziert, ich habe das Token, das Socialite zurückerhält, aber ich erhalte "ungültige Grant" -Fehler, wenn ich die nächste API-Anfrage (diese Methode) autorisieren möchte – joepferguson

+4

@Joe Versuchen, das Token durch Widerruf des Zugriffs zu aktualisieren erneut authentifizieren. Möglicherweise müssen Sie auch einen anderen Bereich verwenden. Per Default verwendet Socialite nur ein paar Bereiche, ich glaube _profile_ und _email_. Sie müssen die Bereiche _calendar_ oder _calendar.readonly_ für die Google-API-Dokumente hinzufügen. – brokekidweb

Antwort

1

Kalender verwendet einen anderen Bereich als soziale Anmeldung. Sie müssen erneut um Erlaubnis fragen. Sie können die Dokumentation des Calendar API überprüfen und es auf Google Playground ausprobieren.

Auch Google gibt "Code wurde bereits eingelöst.", weil Sie bereits ein Zugriffs-Token für die öffentlichen Informationen des Benutzers mit Ihrem Code haben.

Verwandte Themen