2012-08-11 224 views
0

需要Android应用程序的良好和简单的例子,需要登录谷歌身份验证,我可以在我的应用程序中使用。 我是OAuth的新手,所以我正在尝试获取每个示例。Android- Oauth 2.0谷歌登录

我已经通过facebook进行了认证,获得了用户名和所有基本信息。 在Facebook上我从事这个例子:http://blog.doityourselfandroid.com/2011/02/28/30-minute-guide-integrating-facebook-android-application/

但是,当我从这个例子尝试:http://blog.doityourselfandroid.com/2011/08/06/oauth-2-0-flow-android/ 注册应用程序,并导入项目到Eclipse过了Git就不能运行。一切接着一切。总是在JsonFactory上出错。

代码:

private void performApiCall() { 
    try { 
     JsonFactory jsonFactory = new JacksonFactory(); 
     HttpTransport transport = new NetHttpTransport(); 

     CredentialStore credentialStore = new SharedPreferencesCredentialStore(prefs); 
     AccessTokenResponse accessTokenResponse = credentialStore.read(); 

     GoogleAccessProtectedResource accessProtectedResource = new GoogleAccessProtectedResource(accessTokenResponse.accessToken, 
       transport, 
       jsonFactory, 
       OAuth2ClientCredentials.CLIENT_ID, 
       OAuth2ClientCredentials.CLIENT_SECRET, 
       accessTokenResponse.refreshToken); 

     final Latitude latitude = new Latitude(transport, accessProtectedResource, jsonFactory); 
     latitude.apiKey=OAuth2ClientCredentials.API_KEY; 

     LatitudeCurrentlocationResourceJson currentLocation = latitude.currentLocation.get().execute(); 
     String locationAsString = convertLocationToString(currentLocation); 
     textView.setText(locationAsString); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
     textView.setText("Error occured : " + ex.getMessage()); 
    } 
} 

错误代码:

08-11 21:45:33.606: W/dalvikvm(464): threadid=3: thread exiting with uncaught exception (group=0x4001b188) 
08-11 21:45:33.606: E/AndroidRuntime(464): Uncaught handler: thread main exiting due to uncaught exception 
08-11 21:45:33.606: E/AndroidRuntime(464): java.lang.NoClassDefFoundError: com.google.api.client.json.jackson.JacksonFactory 
08-11 21:45:33.606: E/AndroidRuntime(464): at com.ecs.android.sample.oauth2.LatitudeApiSample.performApiCall(LatitudeApiSample.java:79) 
08-11 21:45:33.606: E/AndroidRuntime(464): at com.ecs.android.sample.oauth2.LatitudeApiSample.onCreate(LatitudeApiSample.java:61) 
08-11 21:45:33.606: E/AndroidRuntime(464): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
08-11 21:45:33.606: E/AndroidRuntime(464): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
08-11 21:45:33.606: E/AndroidRuntime(464): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
08-11 21:45:33.606: E/AndroidRuntime(464): at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
08-11 21:45:33.606: E/AndroidRuntime(464): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
08-11 21:45:33.606: E/AndroidRuntime(464): at android.os.Handler.dispatchMessage(Handler.java:99) 
08-11 21:45:33.606: E/AndroidRuntime(464): at android.os.Looper.loop(Looper.java:123) 
08-11 21:45:33.606: E/AndroidRuntime(464): at android.app.ActivityThread.main(ActivityThread.java:4363) 
08-11 21:45:33.606: E/AndroidRuntime(464): at java.lang.reflect.Method.invokeNative(Native Method) 
08-11 21:45:33.606: E/AndroidRuntime(464): at java.lang.reflect.Method.invoke(Method.java:521) 
08-11 21:45:33.606: E/AndroidRuntime(464): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
08-11 21:45:33.606: E/AndroidRuntime(464): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
08-11 21:45:33.606: E/AndroidRuntime(464): at dalvik.system.NativeStart.main(Native Method) 
08-11 21:45:33.616: I/dalvikvm(464): threadid=7: reacting to signal 3 
08-11 21:45:33.616: E/dalvikvm(464): Unable to open stack trace file '/data/anr/traces.txt': Permission denied 

如果有人知道是什么问题,也可以用后的源代码,并很好的解释项目的一些链接。

我的应用程序只需要通过谷歌身份验证登录并获取用户名。

+1

为什么不显示错误,也许你的代码在错误发生的地方。 – 2012-08-11 21:31:52

+0

编辑的问题,但我更喜欢另一个例子,因为这一个不做我所需要的 – Jack 2012-08-11 21:51:36

回答

1

你缺少项目中的一个jar文件,它出现:

java.lang.NoClassDefFoundError: com.google.api.client.json.jackson.JacksonFactory 

所以,你可能想从这里找到它:

http://code.google.com/p/google-api-java-client/ 

如果你有图书馆,那么你可能只需要检查jar文件以将其导出,并且您可以在此答案中找到如何执行此操作的屏幕截图:

https://stackoverflow.com/a/9937414/67566

如果您转到配置构建路径,然后在订单和导出 选项卡上,验证您的jar文件的复选框已被选中,并且可能会解决您的问题。

+0

已经做到了,没有为我工作的图片:http://i.minus.com/i7JrnWOUZSa6U.jpg http://我。 minus.com/iXbVzTwLCWlAG.jpg – Jack 2012-08-12 00:28:38

+0

@杰克 - 我更新了我的答案。 – 2012-08-12 23:33:34

+0

这个答案的最后一部分非常有帮助。非常感谢 – Jack 2012-08-13 10:46:04