最近,我一直在使用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=samples
credential = 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自动完成的)

  • 谁能告诉我为什么有人使用第一种方法而不是第二种方法?
  • 如何在第一种方法中访问身份验证 token ?
  • 最佳答案

    Google APIs Client Library for Java顾名思义是一个用于访问Google API的库,它可用于多种平台,例如Java(通常)和Android,而Google Play ServicesGoogleAuthUtil仅可用于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客户端库的原因

  • 如果您正在开发除Android以外的其他平台,则不能使用GoogleAuthUtil,因为它是Android特定的库。
  • 如果您要开发跨平台应用程序,则可以在共享代码中使用适用于Android和其他平台的Google API客户端库。
  • 如果您与Google的许多服务进行了大量互动,则该库可能会使您的工作变得更轻松。
  • 如果您已经在使用它,并且可以按需要工作,那么继续使用它实际上没有任何缺点,因为它是GoogleAuthUtil的包装器,因此与使用AccountManager或其他基于的库相比,您可以获得GoogleAuthUtil的所有优势。客户经理。

  • 使用GoogleAuthUtil的原因
  • 使用此功能,除了Google Play服务
  • 外,不需要任何其他库或外部依赖项
  • 您的应用程序占用空间应较小,因为您不必包括其他库。
  • 如果您与Google的互动受到限制,那么直接使用GoogleAuthUtil而不是通过另一个库可能会更容易。
  • GoogleAuthUtil应该不难使用,因此使用包装起来的库来简化它可能并不容易使用。



  • 如果您使用的是Google APIs客户端库,那么它对您来说很好用,我看不出您不应该继续使用它的任何原因。

    但是,如果我创建一个需要与Google服务交互的Android(仅)应用程序,则可能会直接使用GoogleAuthUtil。



    是的,我由GoogleAuthUtil自动处理,然后由GoogleAccountCredential使用。



    您应该能够在GoogleAccountCredential对象上调用getToken()方法。

    07-26 09:42