android - 如何在多项 Activity 中正确使用 Google Plus 登录?

标签 android google-api google-plus google-oauth

将 Google+ api 客户端生命周期与多 Activity 应用程序的流程联系起来的好方法/推荐方法是什么?使 Activity 依赖于 onConnected api 客户端方法来触发其功能,将其用作一次性“激活”事物,或者完全是其他事物?

我目前正在努力了解如何在我的 Android 应用中正确使用 Google+ 登录,该应用有多个 Activity 。

这个想法是,在第一阶段,使用 G+ 登录只是为了对用户进行身份验证,并能够获取她的电子邮件、发送通知和类似的东西。最终,我计划推出其他 Google 功能,例如 map 或其他 Google Play 服务,因此我认为已经实现它很有用。

但是,我的应用没有按预期运行,我已将问题范围缩小到以下事实:当存在多个 Activity 时,我尚未了解 G+ 登录应用周期。

实现此身份验证方法的正确或推荐方法是什么?是否有某种模式可以引导我朝着正确的方向前进?

例如,我找到了 a very simple diagram api 客户端 的生命周期,但这与应用程序流程有何关系?

最初我有一个登录 Activity ,我在其中放置了登录按钮。关注 Google's guide我可以登录,当调用 onConnected 方法时,我会启动 Home Activity(有点像应用程序的仪表板或主屏幕)。

这有点工作。例如,为每个 Activity 处理 onStart 和 onStop 的好方法是什么?我应该每次为每个 Activity 重新连接并重新验证 api 客户端吗?所以也许有一个 BaseActivity 来实现这一切是个好主意。

另一个问题是,我应该使用相同的 api 客户端对象并以某种方式传递它,还是将它存储在 Base Activity 类中?还是我应该每次都创建和初始化一个新的 api 客户端对象?

如何仅使用登录 Activity 通过 G+ 进行身份验证,然后获取电子邮件并将其存储在本地数据库中,并将用户标记为“已验证”或“Activity ”或其他内容。这将阻止我每次关闭应用程序或暂停连接时都必须重新进行身份验证,甚至可以节省一些电池电量。

该应用并未真正使用 G+ 发帖或任何其他类似功能。理想情况下,它应该可以在离线状态下正常工作,并且只需要连接初始身份验证或其他一次性的东西。

非常感谢任何正确方向的建议或指示。

编辑:我已经阅读了我能找到的所有使用 Google+ 的指南和教程,并且每个人都从单一 Activity 的角度解决了这个问题。我认为这是一个足够普遍的问题,它可以从某种模式或至少是一般准则中受益。

最佳答案

为每个 Activity 重新连接绝对没问题。从广义上讲,我看到人们实现这一点的方式有 3 种:

  1. 主要在基本 Activity 中实现,并让其他 Activity 对其进行扩展。这是每个 Activity 中的连接/断开连接,但只有一个地方有代码。
  2. 在 fragment 中实现连接/断开连接,并将其包含在需要身份验证的 Activity 中。如果您已有无法扩展的基本 Activity (例如某些游戏案例),这将很有帮助。
  3. 实现连接/断开连接的服务。如果需要登录,这可以触发广播 Intent 或类似内容。

所有这些工作,我已经看到它们都用于现实世界的应用程序。要记住的主要事情是将 99% 的逻辑(用户登录或退出,并且您会被告知)与相对罕见的“此时登录”用例分开。例如,您可能多次触发 onConnected/onConnection 失败,但大多数情况下您忽略或只是稍微改变了应用程序的状态。只有在带有登录按钮的屏幕上,您才需要连接结果解析和 onActivityResult 内容。将 google play 服务连接想象成主要是询问用户的状态,而不是让他们登录,你应该没问题。

关于android - 如何在多项 Activity 中正确使用 Google Plus 登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22368520/

相关文章:

java - android.view.InflateException : Binary XML file line #2:

android - 在三星 Android 手机上调用带逗号/暂停的电话号码

c# - google api oauth 访问 token 检索 - 400 错误请求

google-api - Google API 刷新 token 不接受 'incremental scope' 请求

php - 动态 Google 加上一个 +1 按钮(带有不断变化的 url)

android - 如何从 ActionBar 中的 MenuItem 中删除填充

android - 使用 Android SDK 从 BB10 发送短信

android - 无法从公共(public)谷歌日历 api v3 获取事件

ios - Google+ iOS SDK - 获取关注 "me"的人列表

android - Android 中的 ACTION_SEND 和 Google+ 应用