Google 연락처를 사용하고 있습니다. 하지만 한 시간이 지나면 부여 된 액세스를 수동으로 새로 고쳐야합니다. 이 SO question에 따르면 나는이 호출 내 refresh_token도 업데이트 할 수 있어야한다 : 그것을 호출 할 때 난이 델파이 코드Google 연락처 토큰 만료
var
Http: TidHttp;
URLString: string;
Req, Resp: TStringStream;
begin
Http := TidHttp.Create(nil);
try
URLString := 'client_id=' + FGoggleContacts.ClientID;
URLString := URLString + '&client_secret=' + FGoggleContacts.ClientSecret;
URLString := URLString + '&refresh_token=' + FGoggleContacts.RefreshToken;
URLString := URLString + '&grant_type=refresh_token';
Req := TStringStream.Create(URLString);
Resp := TStringStream.Create('');
HTTP.DoRequest(Id_HTTPMethodPost, 'https://accounts.google.com/o/oauth2/token', Req, Resp, []);
finally
Req.Free;
Resp.Free;
Http.Free;
end;
end;
로 번역하지만, 한
refresh_token = requests.post(
'https://accounts.google.com/o/oauth2/token',
data={
'client_id': APP_ID,
'client_secret': APP_SECRET,
'refresh_token': refresh_token,
'grant_type': 'refresh_token',
}
)
은 내가 http/1.1 400 bad request
오류가
간단히 말해서 Google과의 연결을 유지하려면 어떻게해야합니까? @ mjn42의 도움으로
UPDATE
은 내가 내 요청에 Content-Type
누락 된 것을 발견했다. 그래서 난 내 토큰을 새로 고침하는 새로운 방법을 썼다 :
procedure TGContacts.RefreshTokens;
var
Http: TidHttp;
URLString: string;
Req, Resp: TStringStream;
JSon: ISuperObject;
begin
Http := TidHttp.Create(nil);
Req := TStringStream.Create('');
Resp := TStringStream.Create('');
try
URLString := 'client_id=' + FClientID;
URLString := URLString + '&client_secret=' + FClientSecret;
URLString := URLString + '&refresh_token=' + FRefreshToken;
URLString := URLString + '&grant_type=refresh_token';
Req.WriteString(URLString);
HTTP.Request.ContentType := 'application/x-www-form-urlencoded';
HTTP.DoRequest(Id_HTTPMethodPost, 'https://accounts.google.com/o/oauth2/token', Req, Resp, []);
if HTTP.ResponseCode = 200 then
begin
JSon := SO(UTF8Decode(Resp.DataString));
FAccessToken := JSon['access_token'].AsString;
if JSon['refresh_token'] <> nil then
FRefreshToken := JSon['refresh_token'].AsString;
end;
finally
Req.Free;
Resp.Free;
Http.Free;
end;
end;
난 그냥 다음 토큰이 만료되지 않는 API에 액세스하기 전에를 호출합니다.
이 콘텐츠 형식이다 : 응용 프로그램/x-형상 - 요청 헤더에 urlencoded? – mjn42
@ mjn42 트릭을 해 주셔서 감사합니다 –