Jac*_*ack 1 android google-api
我正在尝试首次使用Google生成的API库.我从Google提供的示例程序中获取了代码.我的代码看起来像
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import android.app.Activity;
import android.os.Bundle;
// Core Google API
import com.google.api.client.auth.oauth2.draft10.AccessTokenResponse;
import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAccessProtectedResource;
import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAccessTokenRequest.GoogleAuthorizationCodeGrant;
import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAuthorizationRequestUrl;
import com.google.api.client.http.ByteArrayContent;
import com.google.api.client.http.GenericUrl;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpRequestFactory;
import com.google.api.client.http.HttpResponse;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson.JacksonFactory;
// Google+ API
import com.google.api.services.plus.*;
public class GooglePlusActivity extends Activity {
// Want data about authenticated user
private static final String SCOPE = "https://www.googleapis.com/auth/plus.me";
//
private static final String CALLBACK_URL = "urn:ietf:wg:oauth:2.0:oob";
//
private static final HttpTransport TRANSPORT = new NetHttpTransport();
private static final JsonFactory JSON_FACTORY = new JacksonFactory();
private static final String CLIENT_ID = "XXXXXXXXXXXXXXX";
private static final String CLIENT_SECRET = "XXXXXXXXXXXXXX";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Generate the URL to which we will direct users
String authorizeUrl = new GoogleAuthorizationRequestUrl(CLIENT_ID,
CALLBACK_URL, SCOPE).build();
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
try {
String authorizationCode = in.readLine();
// Exchange for an access and refresh token
GoogleAuthorizationCodeGrant authRequest = new GoogleAuthorizationCodeGrant(TRANSPORT,
JSON_FACTORY, CLIENT_ID, CLIENT_SECRET, authorizationCode, CALLBACK_URL);
authRequest.useBasicAuthorization = false;
AccessTokenResponse authResponse = authRequest.execute();
String accessToken = authResponse.accessToken;
GoogleAccessProtectedResource access = new GoogleAccessProtectedResource(accessToken,
TRANSPORT, JSON_FACTORY, CLIENT_ID, CLIENT_SECRET, authResponse.refreshToken);
HttpRequestFactory rf = TRANSPORT.createRequestFactory(access);
System.out.println("Access token: " + authResponse.accessToken);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Plus plus = new Plus(new NetHttpTransport(), new JacksonFactory());
}
}
Run Code Online (Sandbox Code Playgroud)
但是以下行:
private static final HttpTransport TRANSPORT = new NetHttpTransport();
Run Code Online (Sandbox Code Playgroud)
导致异常:
10-04 13:33:28.954: ERROR/AndroidRuntime(5925): Caused by: java.lang.NoClassDefFoundError: com.google.api.client.http.javanet.NetHttpTransport
Run Code Online (Sandbox Code Playgroud)
我在构建路径中添加了以下库:
google-api-client-1.5.0-beta.jar google-api-services-plus-v1-1.2.2-beta.jar
和这些依赖库:
guava-r09 httpclient-4.0.3 jackson-core-asl-1.6.7 gson-1.6
我只是出于绝望而添加了依赖项...因为我看不到我需要它们.我的所有import语句在编译时都能正确解析,为什么我会收到这个错误?
我在Windows 7上使用Eclipse Indigo.
我添加了以下jar文件:
google-api-client-1.5.0-beta
google-api-client-extensions-1.5.0-beta
google-api-client-extensions-android2-1.5.0-beta
google-api-services-plus-v1-1.2 .2-beta
google-http-client-1.5.0-beta
google-http-client-extensions-1.5.0-beta
google-http-client-extensions-android2-1.5.0-beta
google-oauth-client-1.5 .0-beta
google-oauth-client-extensions-1.5.0-beta
gson-1.6
guava-r09
httpclient-4.0.3
httpcore-4.0.1
jackson-core-asl-1.6.7
这解决了我的问题.但我仍然不能确定这些文件如何对应到库列表中的wiki页面上也是为什么当我的进口在编译时得到解决,他们有必要.
您必须显式添加google-http-client-1.5.0-beta.jar的库引用(右击项目 - >属性 - > Java构建路径 - >添加外部JAR),不要相信类路径.如果你不这样做,在apk文件中不包含所需的数据.
你可以从这里下载Google plus库google-plus-java-starter_v5.zip

| 归档时间: |
|
| 查看次数: |
10674 次 |
| 最近记录: |