最近,我一直在使用Android上的Google API,特别是Google Analytics(分析),AdSense和Tasks API。
我看过Google提供的一些示例,他们使用此语句获取GoogleAccountCredential
对象
https://code.google.com/p/google-api-java-client/source/browse/tasks-android-sample/src/main/java/com/google/api/services/samples/tasks/android/TasksSample.java?repo=samplescredential = GoogleAccountCredential.usingOAuth2(this, Collections.singleton(TasksScopes.TASKS));
但是,如果我浏览以下文档:
http://developer.android.com/google/auth/http-auth.html
http://developer.android.com/google/play-services/auth.html
他们俩都提到了以下用于获取 token 的方法:token = GoogleAuthUtil.getToken(mActivity, mEmail, mScope);
我很困惑在哪种情况下使用哪种方案,为什么使用。我一直在使用方法号。 1个成功且无需在首选项中保留 token (我猜这是由GoogleAccountCredential自动完成的)
最佳答案
Google APIs Client Library for Java顾名思义是一个用于访问Google API的库,它可用于多种平台,例如Java(通常)和Android,而Google Play Services和GoogleAuthUtil仅可用于Android。
通过查看项目的wiki page,很难理解Google APIs客户端库与GoogleAuthUtil之间的关系,因为该Wiki建议AccountManager用于处理Google帐户,而实际上根本没有提到GoogleAuthUtil。
但是,如果您稍微深入研究一下代码及其问题跟踪程序,则可以看到链接的tasks sample实际上是uses GoogleAuthUtil,因为当支持GoogleAuthUtil为version 1.12.0时,Google API客户端库中的added。
可能会在Wiki中提及AccountManager而不是GoogleAuthUtil,因为这是在GoogleAuthUtil可用之前进行OAuth2身份验证的方法,并且因为该Wiki的这一部分尚未更新。
有关AccountManager和GoogleAuthUtil之间的区别的更多信息,请参见:In a nutshell what's the difference from using OAuth2 request getAuthToken and getToken
简而言之,Google API客户端库是一个跨平台的库,用于与Google的服务进行交互,而Android版本是通过使用GoogleAuthUtil实现的。
使用Google API客户端库的原因
使用GoogleAuthUtil的原因
如果您使用的是Google APIs客户端库,那么它对您来说很好用,我看不出您不应该继续使用它的任何原因。
但是,如果我创建一个需要与Google服务交互的Android(仅)应用程序,则可能会直接使用GoogleAuthUtil。
是的,我由GoogleAuthUtil自动处理,然后由GoogleAccountCredential使用。
您应该能够在
GoogleAccountCredential
对象上调用getToken()方法。