2014-04-29 7 views
0

내 프로그램은 Google 캘린더에 접속하여 이벤트를 만들 수있다하지만 텍스트 오류를 ​​수신하고 "잘못된 토큰 - 위해 AuthSub 토큰이 잘못된 범위가"델파이 Google 캘린더에서 이벤트를 생성 - 오류 401

URL은입니다

http://www.google.com/calendar/feeds/default/owncalendars/full 내 코드입니다 :이 OAuth를 연결에 대한 내 코드입니다

Begin 
    createXML := '<?xml version=''1.0'' encoding=''UTF-8''?>'#13#10 + 
        '<entry xmlns=''http://www.w3.org/2005/Atom'''#13#10 + 
        'xmlns:gd=''http://schemas.google.com/g/2005''>'#13#10 + 
        '<category scheme=''http://schemas.google.com/g/2005#kind'''#13#10 + 
        'term=''http://schemas.google.com/g/2005#event''></category>'#13#10 + 
        '<title type=''text''>' + title + '</title>'#13#10 + 
        '<content type=''text''>' + content + '</content>'#13#10 + 
        '<gd:transparency'#13#10 + 
        'value=''http://schemas.google.com/g/2005#event.opaque''>'#13#10 + 
        '</gd:transparency>'#13#10 + 
        '<gd:eventStatus'#13#10 + 
        'value=''http://schemas.google.com/g/2005#event.confirmed''>'#13#10 + 
        '</gd:eventStatus>'#13#10 + 
        '<gd:where valueString=''' + location + '''></gd:where>'#13#10 + 
        '<gd:when startTime=''' + EventStartTime + ''''#13#10 + 
        'endTime=''' + EventEndTime + '''></gd:when>'#13#10 + 
        '</entry>'; 

    HTTP:=THTTPSend.Create; 
    url:=Edit3.Text; 
    WriteStrToStream(HTTP.Document,EncodeURL(createXML)); 
    HTTP.Headers.Add('Authorization: OAuth '+OAuth.Access_token); 
    HTTP.Headers.Add('GData-Version: 2'); 
    HTTP.MimeType:=('application/atom+xml'); 
    if HTTP.HTTPMethod('POST',url) then 
    XML:=HTTP.Document; 
    Memo2.Lines.LoadFromStream(XML); 
End; 

...

Const 
    client_id=%s&client_secret=%s&code=%s&redirect_uri=%s&grant_type=authorization_‌​‌​code'; 

..... 

     procedure TForm2.Button4Click(Sender: TObject); var HTTP:THTTPSend; 
     begin HTTP:=THTTPSend.Create; 
     try 
     HTTP.Headers.Add('Authorization: OAuth '+OAuth.Access_token); 
     HTTP.Headers.Add('GData-Version: 2'); 
     if  HTTP.HTTPMethod('GET','google.com:443/calendar/feeds/default/allcalendars/full') then 
     XML:=HTTP.Document; 
     End; 
,536,

감사합니다.

사용자 : Google은

+0

대신 OAuth.Access_token과 관련된 코드를 추가하면 유용합니다. – AMS

+0

@AMS는 Oauth Connect의 코드를 추가합니다. – DeveloperPop

답변

0

Here 당신이 인증 헤더가 필요로하는 일을 포함하여 프로토콜을 읽을 수있는 번역합니다. 추가 한 코드를 사용해도 OAuth 객체가 어떻게 작성되었는지는 아직 불분명합니다.

그러나 GData API가 더 이상 사용되지 않으므로 계속 사용하지 않는 것이 좋습니다. 새로운 인증 방법과 함께 JSON 기반 버전 3을 사용해보십시오. API 사양 및 사용법도 새롭기 때문에 시간을 투자해야합니다.

+0

고마워요. 현재 ClientLogin 메서드를 사용하고 있지만 곧 OAuth 2.0을 통과합니다. – DeveloperPop