1

Java から Google ClientLogin API を使用する方法を理解しようとしています。

私が抱えている問題は、以下のコードが例外をスローすることです:

java.lang.IllegalArgumentException: Content-Type のパーサーが定義されていません: text/html; com.google.api.client.http.HttpResponse.parseAs(HttpResponse.java:461) での charset=UTF-8 com.google.api.client.googleapis.auth.clientlogin.ClientLogin.authenticate(ClientLogin.java:191 での) )

私が推測できることから、Transport オブジェクトにいくつかのパーサーを設定する必要があります。私が Web で見つけることができるすべての例は、GoogleTransport (1.7 より前に廃止されました) を使用するか、HttpTransport を使用しますが、もう存在しないように見える「addParser()」メソッドを呼び出します (移動について話します)。 target) または、HttpTransport の独自のサブクラスを作成し、オーバーライド コンストラクターにパーサーを設定します (ただし、このために見つけた例では、API パッケージに含まれていないように見える GoogleUtil クラスを使用していますが、含まれていると確信しています)。依存するすべての jar ファイル)。

これを行う方法に関する提案はありますか?(未加工のプロトコルを直接使用できることはわかっていますが、ClientLogin クラスが迅速かつ簡単な解決策になると思いました)。

ClientLogin を呼び出すために使用されているコードを以下に示します。

//Note I've checked that googleUserName and googlePassword are set
System.out.println("logging in for:" + googleUserName + "," + googlePassword);
ClientLogin clientLogin = new ClientLogin();
clientLogin.accountType = "HOSTED_OR_GOOGLE";
clientLogin.applicationName = "MyCompany-LoginProxy-version-0.1";
clientLogin.username = googleUserName;
clientLogin.password = googlePassword;
clientLogin.authTokenType = "apps";


com.google.api.client.http.HttpTransport transport = new NetHttpTransport();

clientLogin.transport = transport;
clientLogin.serverUrl = new GenericUrl("https://www.google.com/accounts/ClientLogin");
ClientLogin.Response loginResponse = clientLogin.authenticate();

参考までに、これはファイルの上部にある import ステートメントです。

import com.google.api.client.googleapis.auth.clientlogin.*;
import com.google.api.client.googleapis.json.GoogleJsonRpcHttpTransport;
import com.google.api.client.http.GenericUrl;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.apache.ApacheHttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.http.HttpParser;
import com.google.api.client.googleapis.GoogleHeaders;
import com.google.api.client.googleapis.json.*;

Google クライアント ライブラリ (Java) の 1.7 ベータ版を使用しています。

また、補足として-OAuthが推奨されるアプローチであることは知っています-そして私は最初にそれを実装しました-しかし、それは私が取り組んでいる要件に適しているとは証明されていません.

4

0 に答える 0