Fehler mit Google Kalender-API - 401 Anmeldung erforderlich beim hinzufügen eines Kalenderereignisses
Als ich am entwickeln eines Export und Import in Google-Kalender-Anwendung mit Codeigniter und die Google-apiService/apiCalendarService. Ich habe alles eingestellt bis perfekt, kein problem mit diesem, wenn ich ermächtige meine Anwendung mit Google aus auf diese Seite:
Den enthaltenen code ist, was passiert, wenn die Umleitung geschieht:
session_start();
require(APPPATH . 'libraries/google/apiClient.php');
require(APPPATH . 'libraries/google/contrib/apiCalendarService.php');
$apiClient = new apiClient();
$apiClient->setUseObjects(true);
$calendarService = new apiCalendarService($apiClient);
if(isset($_SESSION['oauth_access_token']))
{
$apiClient->setAccessToken($_SESSION['oauth_access_token']);
}
else
{
$token = $apiClient->authenticate();
$_SESSION['oauth_access_token'] = $token;
}
Nach der Authentifizierung, die ich bekommen umgeleitet zu meiner localhost Website mit den Optionen in my URL:
http://localhost/project/acp/sync/auth/?code=4/DS91JtSJ5_9Q-Z55Kpyh2AicyWdL
Mein Skript erkennt, wenn ein authencation wurde durch die überprüfung der URI-segment mit auth
und ein code
query-string - so kann ich starten Sie den Import Veranstaltungen, um meinen Google-Kalender-Konto, bis, ich bekomme diese Fehlermeldung geworfen:
Fatal error: Uncaught exception 'apiServiceException' with message 'Error calling POST https://www.googleapis.com/calendar/v3/calendars/primary/events?key={removed API key}: (401) Login Required' in /Users/Me/Sites/project/application/libraries/google/io/apiREST.php:86
Stack trace:
#0 /Users/Me/Sites/project/application/libraries/google/io/apiREST.php(56): apiREST::decodeHttpResponse(Object(apiHttpRequest))
#1 /Users/Me/Sites/project/application/libraries/google/service/apiServiceResource.php(187): apiREST::execute(Object(apiServiceRequest))
#2 /Users/Me/Sites/project/application/libraries/google/contrib/apiCalendarService.php(493): apiServiceResource->__call('insert', Array)
#3 /Users/Me/Sites/project/application/controllers/acp/panel.php(2053): EventsServiceResource->insert('primary', Object(Event))
#4 [internal function]: Panel->sync('auth')
#5 /Users/Me/Sites/project/system/core/CodeIgniter.php(359): call_user_func_array(Array, Array)
#6 /Users/Me in /Users/Me/Sites/project/application/libraries/google/io/apiREST.php on line 86
Den code, dass war importieren ein Ereignis (code kam von Google-API-Beispiele):
session_start();
require(APPPATH . 'libraries/google/apiClient.php');
require(APPPATH . 'libraries/google/contrib/apiCalendarService.php');
$apiClient = new apiClient();
$apiClient->setUseObjects(true);
$service = new apiCalendarService($apiClient);
$event = new Event();
$event->setSummary('Appointment');
$event->setLocation('Somewhere');
$start = new EventDateTime();
$start->setDateTime('2011-06-03T10:00:00.000-07:00');
$event->setStart($start);
$end = new EventDateTime();
$end->setDateTime('2011-06-03T10:25:00.000-07:00');
$event->setEnd($end);
$attendee1 = new EventAttendee();
$attendee1->setEmail('attendeeEmail');
//...
$attendees = array($attendee1,
//...
);
$event->attendees = $attendees;
$createdEvent = $service->events->insert('primary', $event);
echo $createdEvent->getId();
Ich habe versucht, Googeln den Fehler, aber ich kann nicht scheinen zu finden, Lösungen, die mit dieser, weißt du, wie kann ich dieses problem beheben?
- Wo stellen Sie Ihre developerKey?
- Ich habe es in der
config.php
wo Sie normalerweise sollen. - Oh, ich sehe Sie einfach nicht gehören
require_once "config.php";
. Dann weiß ich nicht. - Die config.php wird aufgenommen in die apiService Klasse.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erhalten Sie eine
401 Login Required
weil der zweite code ist nicht die Einstellung der token:Uncaught exception 'apiAuthException' with message 'Could not json decode the access token'
echo $_SESSION['oauth_access_token'];
zu testen. Muss{"access_token":"...","token_type":"...","expires_in"...}
. Google code ist mitjson_decode($accessToken, true);
zu verarbeiten.NULL
als dervar_dump
dieoauth_access_token
im Feld vorhanden.$token = $apiClient->authenticate();
Was Wert bekommen$token
?apiException' with message 'Cant add services after having authenticated'
new apiXXXService($apiClient);
nach$apiClient->authenticate();
'apiServiceException' with message 'Error calling POST https://www.googleapis.com/calendar/v3/calendars/primary/events?key=<api key removed>: (400) Invalid Value'
$attendee1->setEmail('attendeeEmail');
.OAuth mit dem Google funktionieren nicht auf einer lokalen Umgebung. Es muss eine URL/IP-Adresse, die Google-Server Zugriff für den Rückruf /OAuth-handshake.
Schnappen Sie sich eine domain und testen Sie es von dort aus, oder richten Sie eine Weiterleitung bei DynDNS oder einem ähnlichen Dienst.