2017-07-31 66 views
0

我试图实现Android的Drive API以将文件备份到AppFolder。我正在使用Using the Google APIS Client Library for Java to integrate with Drive on Android上的教程,并使用Quickstart中的一些代码片段。Google Drive API Android:卡在登录

  • 当用户打开带有驱动API调用(如在this Activity from the Quickstart活动中,.connect()调用是不成功的,错误代码SIGN_IN_REQUIRED,这似乎是合乎逻辑的我。
  • 我再继续登录到我的谷歌账户,登录看起来succesfull。
  • 活动得到恢复。由于从快速启动链接的活动文件,该onResume方法再次调用.connect()
  • .connect()调用失败,相同的错误代码(SIGN_IN_REQUIRED)和过程repea TS。

在Google Developer Console的API管理器中,我为此应用程序创建了一个项目。在该项目中,我为应用程序创建了一个“OAuth 2.0客户端ID”,其中包含调试包名称和用于调试密钥的SHA-1。在快速入门的清单中,我没有看到任何地方使用的所述凭证的客户端ID。

这是一个已知问题还是我在某处犯了一个错误?

编辑:

我原建快速入门从无到有,错误仍时有发生。因此,这可能是API控制台的问题,而不是客户端问题。

  • 我已经为应用程序创建了一个项目。
  • 我已启用Drive API和Google+ API。
  • 我已经创建了一个“API密钥”凭证,其中包含我的应用程序的软件包名称和我的调试签名密钥的SHA-1。
+0

你有重写onConnectionFailed()? – Mani

+0

是的。它与本教程几乎相同,只需调用connectionResult.startResolutionForResult(this,RESOLVE_CONNECTION_REQUEST_CODE);'。该呼叫已到达(用断点检查)。 – mDroidd

+0

我已经构建了快速启动而不更改任何内容,问题仍然存在。看来我在API控制台中做错了什么。 OP编辑。 – mDroidd

回答

0

不是解决我所期待的,但在这里它是:

原来的Android工作室是不是我的签名与位于~/.android/debug.keystore调试关键应用程序,但使用不同的密钥。

不知道它是哪个键,我能够使用this SO question中描述的方法计算出它的SHA-1。

0

这是因为您没有生成正确的apk与正确的SHA1密钥或包名称,需要在Google API控制台中注册。来自[Google android-quickstart]的代码是100%正确的。 onResume方法再次调用.connect()是由于您的SHA1密钥或包名称与API控制台不匹配。

为了解决这个问题: (1)您应首先生成SHA1为您的应用程序。如果您使用的是Android的工作室和开发应用程序,请按照this让你的应用程序的默认SHA1。 [请记住不要使用live sha1键,否则在登录时会卡住!]
(2)请按照this的说明使用默认的sha1创建您的OAuth客户端ID。 (3)再次运行[Google android-quickstart]。

*注意:您不必将任何API客户端ID复制到您的清单或活动中,因为您应该成功地在API控制台中使用指定的软件包名称和Sha1键注册您的应用程序,以便Google可以检测这些东西自动启动时应用程序。

0

this项目的参考只是删除以下行,然后onResume()不是一次又一次

打电话试试这个:

@Override 
protected void onPause() { 
    if (mGoogleApiClient != null) { 
     mGoogleApiClient.disconnect(); 
    } 
    super.onPause(); 
}