2011-08-09 13 views
1
これは私の前の質問の継続である

デルファイ、WINHTTP、Googleのログイン、フュージョンテーブル

Delphi, WebBrowser, Google Login, FusionTable

しかし、WinHTTPの持つテストもTWebBrowserベースのテストとして失敗した...

そして、これあなたが望むように1つの質問です。:-)

私は1つのテーブルを今公開していますが、私たちが非フリーアカウントを購入すると私的なものに変更されます。

私は簡単なWinHTTPテストを作成しましたが、これも失敗しました。

私はログインできますが、 "Auth"タグがありますが、次の "private"リクエストは401エラーを返します。

procedure TForm1.BitBtn1Click(Sender: TObject); 
var 
    WinHttpReq, temp : variant; 
    URL, s : String; 
    params : TStringList; 
    authtoken, query, posts : string; 
begin 
    URL := 'https://www.google.com/accounts/ClientLogin'; 

    WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1'); 

    params := TStringList.Create; 
    try 
     params.Values['accountType'] := 'GOOGLE'; 
     params.Values['Email'] := csEmail; 
     params.Values['Passwd'] := csPwd; 
     params.Values['service'] := 'fusiontables'; 
     params.Values['source'] := csSource; 
     posts := EncodeParamsToURL(params); 
    finally 
     params.Free; 
    end; 

    URL := URL + '?' + posts; 

    WinHttpReq.Open('POST', URL, false); 
    WinHttpReq.Send(); 
    s := WinHttpReq.ResponseText; 

    Memo1.Lines.Text := s; 

    params := TStringList.Create; 
    try 
     params.Text := s; 
     authtoken := params.Values['Auth']; 
     Edit1.Text := authtoken; 
    finally 
     params.Free; 
    end; 

    //query := URLEncode('SHOW TABLES'); 
    query := URLEncode('select * from 1236965'); 

    url := 'http://www.google.com/fusiontables/api/query?sql=' + query; 

    WinHttpReq.Open('POST', URL, false); 
    WinHttpReq.setRequestHeader('Authorization', 'GoogleLogin auth="' + authToken + '"'); 
    WinHttpReq.Send(); 
    s := WinHttpReq.ResponseText; 

    Memo1.Lines.Text := s; 

end; 

私が「選択」をしたとき、私は行を得ました。 しかし、私がテーブルの名前を見たいと思ったら、401エラーが出ます...

このエラーの原因はわかりません。

a。無料アカウントにプライベートにアクセスするための十分な権利がありません
b。ヘッダーを間違って設定しました
c。私はcsSourceを間違って設定しました(私は "MyCompanyName-Test-1.0"を設定しました)
d。私が何を知っていない他の事...

ログインとデータへのアクセス方法を教えてもらえますか?

答えて

1
得るためにあなたの方法を変更し

:(POSTでも動作しますが)最初の変更はdocumentationを遵守することである

WinHttpReq.setRequestHeader('Authorization', 'GoogleLogin auth=' + authToken); 

WinHttpReq.Open('GET', URL, false); 

をそして、あなたの認証トークンの周り"を削除2番目の変更はエラーを修正します。

関連する問題