Einzelnen Beitrag anzeigen

mlc42

Registriert seit: 9. Feb 2013
123 Beiträge
 
#1

Delphi (XE8) RestRequest Post Result 401

  Alt 30. Jan 2017, 22:13
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
  Mit Zitat antworten Zitat