Hallo
ich versuche per RestRequest Daten an die Google
API zu senden, bekomme aber leider
einen 401 zurück
{
"error":
{
"errors":
[
{
"domain":"global",
"reason":"required",
"message":"Login Required",
"locationType":"header",
"location":"Authorization"
}
]
,
"code":401,
"message":"Login Required"
}
}
wenn ich diesen Code ausführe
_event := '{"end": {"dateTime": "2017-01-30T09:00:00Z"},"start": {"dateTime": "2017-01-30T08:00:00Z"}}';
ResetRESTComponentsToDefaults;
gettokens(acc,ref);
OAuth2_GoogleTasks.AccessToken := acc;
OAuth2_GoogleTasks.RefreshToken := ref;
RESTClient.BaseURL := 'https://www.googleapis.com/calendar/v3';
RESTClient.Authenticator := OAuth2_GoogleTasks;
RESTRequest.Method := TRESTRequestMethod.rmPOST;
RESTRequest.Resource := '/calendars/primary/events/';
RESTRequest.AddBody(_event, ctAPPLICATION_JSON);
RESTRequest.Execute;
Der sehr ähnliche Aufruf zum löschen benutzt das gleiche OAuth2_GoogleTasks
und klappt dagegen ohne Probleme
function delevent : boolean;
begin
ResetRESTComponentsToDefaults;
gettokens(acc,ref);
OAuth2_GoogleTasks.AccessToken := acc;
OAuth2_GoogleTasks.RefreshToken := ref;
RESTClient.BaseURL := 'https://www.googleapis.com/calendar/v3';
RESTClient.Authenticator := OAuth2_GoogleTasks;
RESTRequest.Method := TRESTRequestMethod.rmDELETE;
RESTRequest.Resource := '/calendars/primary/events/'+EventID;
RESTRequest.Execute;
result := pos('authError',RESTRequest.Response.JSONText)=0;
end;
Leider werde ich aus den Delphi Beispielen bzw der üppigen Hilfe nicht wirklich schlau.
Hat jemand einen Tip wie es richtig geht?
Martin