Pakiety Laravel 5, Socialite i google/apiclient.Laravel Socialite + Wykonywanie połączeń API po zalogowaniu
kod źródłowy: https://github.com/svpernova09/meatings
mam towarzystwa działa dobrze z Google do logowania użytkowników w
Próbuję nawiązać połączenie API w innej metody, aby pobrać zdarzenia kalendarza jako zalogowany użytkownik. . Utknąłem z tym, jakich tokenów użyć, gdzie.
Błąd Dostaję jest:
"błąd": "invalid_grant"
"ERROR_DESCRIPTION": "kod został już wykorzystany."
Moja metoda:
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);
}
Wyjście laravel jest:
Google_Auth_Exception zgodne OAuth2.php 127: Błąd pobierania OAuth2 token dostępu, wiadomość: 'invalid_grant'
$ kod użytkownika wygląda następująco: 4/hfPzDrOHyaEv3asdfadsfasdfDw72nXIl0rt2boUpGj7h M.Um5wPgCeasdfasdfafd1t6qxkmwI
Wszelkie wskazówki będą świetne. Nigdzie nie docieram do przewodników google.
W tym momencie nie jesteś już uwierzytelniony? Mówi, że kod został już wykorzystany i masz już token dostępu. –
Tak, użytkownik jest już uwierzytelniony, mam token, który przywraca Socialite, ale dostaję błędy "nieprawidłowe udzielenie", gdy próbuję autoryzować następne żądanie API (ta metoda) – joepferguson
@Joe Spróbuj odświeżyć token, odwołując dostęp i ponowne uwierzytelnianie. Możesz również użyć innego zakresu. Domyślnie program społecznościowy używa tylko kilku zakresów, uważam, że _profile_ i _email_. Musisz dodać zakresy _calendar_ lub _calendar.readonly_ do dokumentów Google API. – brokekidweb