Android 驱动器 API startResolutionForResult returns RESULT_CANCELLED

Android Drive API startResolutionForResult returns RESULT_CANCELLED

我正在尝试为我的 Android 应用实现 Google Drive,但我什至无法连接到 Api 客户端。我不知道为什么:

  1. 我已经在开发人员控制台中为 ~/.android/debug.keystore 配置了项目和凭据(值似乎是正确的)
  2. 我从 Drive for Android Documentation 复制粘贴了代码 -> 在方法 onConnectionFailed() 中 如果 connectionResult.hasResolution()
  3. 我正在调用 connectionResult.startResolutionForResult()
  4. onActivityResult 中匹配 requestCode 我收到 resultCode == 0 (RESULT_CANCELLED) 即使我 select 我的帐户

你知道为什么吗?我也尝试添加:

<meta-data
    android:name="com.google.android.apps.drive.APP_ID"
    android:value="----"/>

进入 Manifest,它在文档页面上没有提到,但在一些 SO 帖子上。

感谢帮助

编辑:

我也试过用enableAutoManage

mGoogleApiClient = new GoogleApiClient.Builder(this)
        .enableAutoManage(this, this)
        .addApi(Drive.API)
        .addScope(Drive.SCOPE_FILE)
        .build();

而不是手动配置连接和连接失败回调:

        .addConnectionCallbacks(this)
        .addOnConnectionFailedListener(this)

它 returns 我在 onConnectionFailed 方法中的错误代码 13。基于 documentation 看来,这个 returns when:

OnConnectionFailedListener passed to enableAutoManage(FragmentActivity, GoogleApiClient.OnConnectionFailedListener) when the user choses not to complete a provided resolution. For example by canceling a dialog.

但是我没有取消它。

我正在 Nexus 5x 上测试 - Android N

我在阅读有关钱包的内容时发现了问题所在 api

我只需要创建 OAuth 客户端 ID 而不是 API 密钥

  1. 转到Developer Console > Credentials
  2. 单击 "create credentials" > OAuth 客户端 ID > Android
  3. 填写详细信息
  4. 创建
  5. 打开 OAuth 同意屏幕(在凭据页面上)
  6. 填写邮箱和产品名称
  7. 保存

现在可以使用了!

以防万一

如果您错过了客户端 ID 创建过程,@VizGhar 解决方案是正确的。但是我得到 resultCode=0 并且我的 OAuth 客户端 ID 一切正常。最后我 解决了它 ,所以我根据文档创建了 SHA1,但我 运行 我的应用程序处于调试模式(构建变体)并且始终具有 resultCode=0。只是 切换到发布模式 并且问题消失了,现在 resultCode=-1 符合预期。