最近,我在Analytics、AdSense和Tasks上大量使用Google。
我见过Google提供的一些示例,它们使用此语句获取GoogleAccountCredential
对象。
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 = GoogleAuthUtil.getToken(mActivity, mEmail, mScope);
我搞不懂在哪一种场景中使用哪一种,以及为什么。我一直在成功地使用1号方法,并且不需要将令牌保存在首选项中(我猜这是由GoogleAccountCredential自动完成的)。
发布于 2014-03-11 19:55:53
顾名思义,Google客户端Java库是一个用于访问Google的库,它可以用于多个平台,例如Java (一般)和Android,而Google Play服务和GoogleAuthUtil只能在安卓上使用。
通过查看该项目的wiki页面,很难理解Google客户端库与GoogleAuthUtil的关系,因为wiki表明AccountManager用于处理谷歌帐户,而实际上根本没有提到GoogleAuthUtil。
但是,如果您深入研究代码及其问题跟踪器,您可以看到,您链接的任务样本实际上是使用 GoogleAuthUtil,因为当对GoogleAuthUtil的支持是已添加时,Google客户端库的版本1.12.0就已经链接了。
wiki可能是指AccountManager而不是GoogleAuthUtil,因为这是在OAuth2可用之前进行OAuth2身份验证的方式,而且因为wiki的这一部分还没有更新。
有关AccountManager和GoogleAuthUtil之间差异的更多信息,请参见:简而言之,使用OAuth2请求getAuthToken和getToken有什么区别?
简而言之,Google客户端库是一个跨平台库,用于与谷歌的服务进行交互,而版本是使用GoogleAuthUtil.实现的。
有人能告诉我为什么有人会使用第一种方法而不是第二种方法吗?
使用Google客户端库的原因
使用GoogleAuthUtil的原因
我搞不懂在哪一种场景中使用哪一种,以及为什么。我已经成功地使用了第一种方法。
如果您正在使用Google客户端库,并且它对您很好,我看不出有什么理由不应该继续使用它。
然而,如果我只创建一个需要与谷歌服务交互的Android应用程序,我可能会直接使用GoogleAuthUtil。
..。不需要将令牌保存在首选项中(我猜这是由GoogleAccountCredential自动完成的)
是的,I,这是由GoogleAuthUtil自动处理的,而GoogleAccountCredential又使用它。
如何在第一个方法中访问auth令牌?
您应该能够调用GoogleAccountCredential
对象上的方法GoogleAccountCredential
。
发布于 2014-09-16 15:34:00
Google Play Services client library
是专门为Android设备编写的,目的是提供与单个Google服务的无缝集成,并提供一个一致的用户界面,以获得用户的授权,使用他们的凭据访问这些服务。
Google APIs Client Library for Java
是从所有应用程序类型(web、installed或application)访问generic的通用库。
回到Android,如果您想要使用的Google不包含在Google Play services library
中,您可以使用适当的REST进行连接,但是您必须获得一个OAuth 2.0令牌。
为了得到一个记号,你可以-
GoogleAuthUtil
和AccountPicker利用Google服务库的授权部分。阅读授权与谷歌的REST。 (GoogleAuthUtil.getToken()
缓存并管理令牌过期和刷新本身。但是,在出现网络错误/服务器负载的情况下,您可能需要在重新尝试令牌之前使用指数后退算法,以避免服务器收到大量请求。)google-api-client-android-1.19.0.jar
)在google-api-client-android-1.19.0.jar
中打包的google-api-client-android-1.19.0.jar
。该软件包提供基于Google服务、客户端库和GoogleAccountCredential is just a wrapper
的实用程序,包括GoogleAuthUtil
和AccountPicker
。这将允许您使用相同的一致授权流和Google服务客户端库中的标准帐户选择器对话框,同时将令牌管理委托给GoogleAccountCredential
。有关示例,请参阅这。发布于 2014-03-11 18:51:28
第一种方法(com.google.api.client.googleapis.extensions.android.gms.auth.*)是谷歌更通用的跨平台账户管理流程的一部分,而第二种方法(com.google.android.gms.auth.GoogleAuthUtil)则是安卓专用的。它看起来像各种各样的,方法二,包装和简化方法一。例如,Google+文档,第二段声明“Google+登录按钮对用户进行身份验证并管理OAuth 2.0流,这简化了与Google+的集成”。
我会用安卓特有的方法,只要可能的话,token = GoogleAuthUtil.getToken(mActivity, mEmail, mScope),
。
https://stackoverflow.com/questions/22142641
复制相似问题