Authentifizierung bei Google: OAuth2 gibt weiterhin "invalid_grant" zurück
Ich habe begonnen, Google Kalender für meine neue Anwendung zu konfigurieren. Ich habe fast eine exakte Kopie des bei Google-Entwicklern angezeigten Authentifizierungscodes erstellt (https://developers.google.com/google-apps/calendar/instantiate ), aber ich bekomme immer den folgenden Fehler:
Fehler beim Abrufen des OAuth2-Zugriffstokens: 'invalid_grant'
Ich benutze derzeit Fork-CMS (http://www.fork-cms.com ), ein junges leichtes CMS. Ich habe die config.php-Datei des google-api-php-clients richtig konfiguriert. (client-id, client-secret, umleitungs-uri, entwicklungsschlüssel, ...) und die umleitungs-uri ist auf der konsole von google api richtig eingestellt. Mein Code sieht wie folgt aus:
<code><?php /** * This is a widget with a calendar implementation. * * @package frontend * @subpackage events * * @author Michiel Vlaminck <[email protected]> */ class FrontendEventsWidgetCalendar extends FrontendBaseWidget { private $events = array(); private $authUrl = array(); /** * Execute the extra * * @return void */ public function execute() { // call parent parent::execute(); // load template $this->loadTemplate(); // get data $this->getData(); // parse $this->parse(); } /** * Get the data from Google Calendar * This method is only executed if the template isn't cached * * @return void */ private function getData() { require_once PATH_LIBRARY . '/external/google-api-php-client/src/apiClient.php'; require_once PATH_LIBRARY . '/external/google-api-php-client/src/contrib/apiCalendarService.php'; $client = new apiClient(); $service = new apiCalendarService($client); if (isset($_SESSION['oauth_access_token'])) { $client->setAccessToken($_SESSION['oauth_access_token']); } else { $token = $client->authenticate(); $_SESSION['oauth_access_token'] = $token; } if ($client->getAccessToken()) { $calId = FrontendEventsModel::getCalendarId((int) $this->data['id']); $calId = $calId[0]['calendar_id']; $events = $service->events->listEvents($calId); $this->events = $events['items']; $_SESSION['oauth_access_token'] = $client->getAccessToken(); } else { $this->authUrl = $client->createAuthUrl(); } } /** * Parse * * @return void */ private function parse() { $this->tpl->assign('events', $this->events); $this->tpl->assign('authUrl', $this->authUrl); } } ?> </code>
Wenn ich diese Widget-Seite zum ersten Mal öffne, werde ich zu Google weitergeleitet, um die Anwendung zu authentifizieren. Wenn ich damit einverstanden bin, werde ich zu meiner Bewerbung weitergeleitet und an dieser Stelle erhalte ich:
<code>apiAuthException » Main Message Error fetching OAuth2 access token, message: 'invalid_grant' File C:\wamp\www\Officevibes\library/external\google-api-php-client\src\auth\apiOAuth2.php Line 105 Date Thu, 05 Apr 2012 08:34:47 +0000 URL http://localhost/calendar?code=4/YPUpFklKvhEeTcMm4moRth3x49oe Referring URL (Unknown) Request Method GET User-agent Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.142 Safari/535.19 </code>