융합 테이블을 Delphi TWebBrowser 기반 애플리케이션에 통합 할 수 있는지 확인합니다.Delphi, WebBrowser, Google 로그인, FusionTable
그러나 많은 것을 이해하지 못하기 때문에 프로젝트를 계속할 수 없습니다.
공용 테이블이 있습니다.이 테이블에 액세스하고, 일부 행을 업로드하고, 일부 행을 업데이트하고, fusiontablelayer로 표시하고 싶습니다. 지금은 "무료"계정 만 있습니다.
문제는 :
1)
나는 인증해야합니다.
var
posts, s, url : string;
authToken : string;
postdata,
header : OleVariant;
params : TStringList;
i : integer;
begin
header := 'Content-type: application/x-www-form-urlencoded'#13#10;
params := TStringList.Create;
try
params.Values['accountType'] := 'GOOGLE';
params.Values['Email'] := 'any';
params.Values['Passwd'] := 'any';
params.Values['service'] := 'fusiontables';
params.Values['source'] := '?'; // WHAT IS THIS?
posts := EncodeParamsToURL(params);
finally
params.Free;
end;
postdata := VarArrayCreate([0, Length(posts) - 1], varByte);
// Put Post in array
for i := 1 to Length(posts) do
postdata[I - 1] := Ord(posts[I]);
url := 'https://www.google.com/accounts/ClientLogin';
wb.Navigate(url, emptyparam, emptyparam, postdata, header);
while wb.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;
s := (wb.Document as iHTMLDocument2).body.innerText;
이것은 데모이지만 작동 중입니다. "SOURCE"매개 변수는 무엇인지 모르지만 그 결과로 세 줄이 있고 마지막은 토큰이 들어있는 "Auth = ...."입니다.
http://code.google.com/intl/hu-HU/apis/fusiontables/docs/samples/apps_script.html
2)
나는 헤더에이 토큰을 밀어해야합니다. 이렇게하면 401 오류가 발생합니다.
params := TStringList.Create;
try
params.Text := s;
authToken := params.Values['Auth'];
finally
params.Free;
end;
header := 'Authorization : GoogleLogin auth="' + authToken + '"'#13#10;
url := 'http://www.google.com/fusiontables/api/query?select * from 1236944';
wb.Navigate(url, emptyparam, emptyparam, emptyparam, header);
그래서 전 지금 완전히 혼란 스럽습니다.
첫째 : 자바 스크립트 층이 인증 인터페이스를 가지고 있지 않기 때문에
, 나는 내가 "브라우저"를 인증 할 필요가 있다고 생각합니다. 이것이 잘못된 생각 일지 모르지만, 로그인이 세션을 생성하는 일반적인 웹 로그인 로직을 기반으로하는 나의 사고와 세션은 숨겨진 쿠키로 식별되며이 브라우저에서 유효합니다. 하지만 Google 로그인은 요청마다 전달 된 식별자를 사용합니다 ... 잘 모르겠습니다.
그래서 나는 브라우저에서 자동 "로그인"을해야하기 때문에. (그게 사실이 아니라면 WinInet이나 로그인 용 IdHTTP를 사용할 수 있고 브라우저에서 토큰 만 사용할 수 있습니다).
I :
지금 나는 ... 어떻게 HTML에서 로그인 이름/비밀번호를 표시하거나 TWebBrowser에서 토큰 결과를 보여없이 자동 로그인을 수행하는 두 번째
을 생각이없는 데이터를 수정해야합니다.
셋째 ...이 idHTTP처럼 투명한 구성 요소에서 실현 가능 할 수 있으며, I는 웹 브라우저의 변경 사항 만 표시 할 수 있습니다 : 나는 층으로 융합 테이블을 표시 할 수 있습니다
. 한 번 인증을 받으면 너무 어렵지 않습니다 ...
So : Google은 Python/Java를 클라이언트 라이브러리로만 지원하며 Delphi는 지원하지 않기 때문에 지금 혼란 스럽습니다. 인증 및 시각화를 TWebBrowser 구성 요소에 매우 투명하게 통합해야합니다.
그러나 로그인 + fusiontable 조작을 보여 무엇을 그물에 좋은 예 또는 소스가 없습니다 ...
이아무도이 질문에 나를 도와 드릴까요?
약 3 번째 테이블이 공개이면 왜 인증해야합니까? (나는 당신이 Google Maps API를 사용하고있는 것 같습니까?) HTTP 클라이언트 (IdHTTP?)를 사용하여 값을 인증하고 업데이트하고 웹 브라우저를 사용하여지도를 표시하십시오. – lmz
메가 질문을하지 마십시오. 한 번에 한 가지 질문하십시오. 3 가지 질문을 하나씩 쓰면이 사이트가 모든 사람들에게 덜 유용하게 쓰일 수 있습니다. 앱을 작성하는 것과 관련된 모든 것에 대한 큰 질문은 "너무 좁아서"다른 사람에게 유용하지 않을 수 있습니다. 다음에 메가 질문을하면 투표 할 것입니다. 닫으십시오. –
첫째로 : megaquestion을 유감스럽게 생각합니다. 그러나 모든 것이 하나이기 때문에 내가 어디에서 시작하는지 모르겠습니다 ... 둘째 : 이제는 무료 계정이 없기 때문에 나는 대중 테이블을 사용해야합니다. 하지만 나중에 개인 정보 테이블을 사용해야합니다. 정보는 중요하며 공유하지 않으려 고합니다. – durumdara