2012-03-10 21 views
0

私は単純なJavaプログラムを使用してGoogleで認証を試みています。私は自分の資格情報で正しいURLに投稿します。 HTTPステータスコード200の応答が返ってきますが、ユーザーのフィードを取得するために必要な認証トークンは含まれていません。ここにコードがあります。Java認証でのGoogle認証httpトークン

private static String postData = "https://www.google.com/accounts/ClientLogin?Content-type=application/x-www-form-urlencoded&accountType=GOOGLE&Email=xxxxxxxx&Passwd=xxxxx"; 

public GoogleConnector(){ 
    HttpClient client=new DefaultHttpClient(); 
    HttpPost method=new HttpPost(postData); 
    try{ 
     HttpResponse response=client.execute(method); 
     System.out.println(response.toString()); 
    } 
    catch(Exception e){ 
    } 
+0

コード例を掲載しているときにそれが誤っていたのですか、それとも 'Content-'と残りのURLの間に本当に2つのスペースがありますか? – Perception

+0

ああ申し訳ありません、そのちょうどタイプミス。 – user1261046

答えて

1

[OK]を最初に持っている問題は、 'Content-Type'がリクエストパラメータではなくヘッダーである必要があることです。また、POSTのパラメータは要求のURLではなく要求の本文に追加する必要があります。あなたのコードは次のようになります:

HttpClient client = new DefaultHttpClient(); 

HttpPost method = new HttpPost("https://www.google.com/accounts/ClientLogin"); 
method.setHeader("Content-Type", "application/x-www-form-urlencoded"); 

List<BasicNameValuePair> postParams = new ArrayList<BasicNameValuePair>(4); 
postParams.add(new BasicNameValuePair("accountType", "GOOGLE")); 
postParams.add(new BasicNameValuePair("Email", "xxxxxxx")); 
postParams.add(new BasicNameValuePair("Passwd", "xxxxxx")); 
postParams.add(new BasicNameValuePair("service", "cl")); 

UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParams); 
method.setEntity(formEntity); 

HttpResponse response=client.execute(method); 
System.out.println(response.toString()); 
+0

それは動作しますが、私は応答でSID、LSID、Auth Cookieを取得しません。私はそれが認証されるべきだが、私はトークンを取得しないということを意味するステータス200を取得する – user1261046

+0

私はこの要求をRESTクライアントにPOSTすると、ヘッダーではなく応答本体にSIDとLSIDを取得します。 – Perception

+0

素晴らしい作品です、ありがとうございます。しかし、私が読んだところでは、SIDとLSIDを使用すべきではなく、Authトークンを代わりに使用するべきです。つまり、レスポンス本文にAuthトークンが見つかりません。それについての考えは? – user1261046