>我在开发人员控制台中为〜/ .android / debug.keystore配置了项目和凭据(值似乎是正确的)
>我有来自Drive for Android Documentation的复制粘贴代码 – >在方法onConnectionFailed()我调用connectionResult.startResolutionForResult()如果connectionResult.hasResolution()
>在onActivityResult中匹配requestCode即使我选择了我的帐户,我也收到了resultCode == 0(RESULT_CANCELLED)
你知道为什么吗?我还尝试添加:
<Meta-data android:name="com.google.android.apps.drive.APP_ID" android:value="----"/>
在文档页面上没有提到但在某些SO帖子上没有提到的Manifest.
感谢帮助
编辑:
我也试过使用enableAutoManage
mGoogleApiClient = new GoogleApiClient.Builder(this) .enableAutoManage(this,this) .addApi(Drive.API) .addScope(Drive.SCOPE_FILE) .build();
而不是manualy配置连接和connectionFailed回调:
.addConnectionCallbacks(this) .addOnConnectionFailedListener(this)
它在onConnectionFailed方法中返回错误代码13.根据documentation看来,这在以下时间返回:
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.
解决方法
我只需要创建OAuth客户端ID而不是API密钥
>转到Developer Console > Credentials
>点击“创建凭据”> OAuth客户端ID> Android的
>填写详细信息
>创建
>打开OAuth许可屏幕(在凭据页面上)
>填写电子邮件和产品名称
>保存
现在它有效!