Google云端硬盘:登录失败。登录指定帐户时出错

时间:2015-08-27 06:32:23

标签: android google-drive-api google-play-services

我试图允许我的用户选择要上传到我的服务器的文件以进行更多处理。我无法让登录工作,我无法找出原因。以下是我用来启动与Google握手的代码:

public GoogleApiClient getGoogleApiClient() {
    if (mGoogleApiClient == null) {
        mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
                .addApi(Drive.API)
                .addScope(Drive.SCOPE_FILE)
                .addScope(Drive.SCOPE_APPFOLDER)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();
    }
    return mGoogleApiClient;
}

private void getDataFromGoogleDrive() {
    try {
        IntentSender intentSender = Drive.DriveApi.newOpenFileActivityBuilder().build(getGoogleApiClient());
        getActivity().startIntentSenderForResult(intentSender, RC_SIGN_IN, null, 0, 0, 0);
    } catch (IntentSender.SendIntentException e) {
        Log.w(TAG, "Unable to send intent", e);
        getGoogleApiClient().connect();
    }
}

public void onConnected(Bundle bundle) {
    if (getGoogleApiClient().isConnected()) {
        getDataFromGoogleDrive();
    }
}

public void onConnectionSuspended(int i) {
}

public void onConnectionFailed(ConnectionResult connectionResult) {
    if (connectionResult.hasResolution()) {
        try {
            connectionResult.startResolutionForResult(getActivity(), RC_SIGN_IN);
        } catch (IntentSender.SendIntentException e) {
            // Unable to resolve, message user appropriately
        }
    } else {
        GooglePlayServicesUtil.getErrorDialog(connectionResult.getErrorCode(), getActivity(), 0).show();
    }
}


protected void onActivityResult(int requestCode, int resultCode, Intent data){
    if (requestCode == RC_SIGN_IN) {
        if (!getGoogleApiClient().isConnecting()) {
            getGoogleApiClient().connect();
        }
    }
    super.onActivityResult(requestCode, resultCode, data);
}

我也遵循了这里的指示:

https://developers.google.com/drive/android/auth#connecting_and_authorizing_the_google_drive_android_api

我有什么东西在这里失踪吗?我的凭据是准确的,因为我也在谷歌地图中使用相同的凭据。在我的清单中,我有以下内容:

    <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
    <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="@string/google_api_key" />

我注意到Google云端硬盘并不要求我传递api密钥?那是对的吗?除此之外,我无法想到任何事情 - 但文档并没有说它是必需的。

我的build.grade文件依赖项在这里:

compile 'com.google.android.gms:play-services:7.8.0'
compile 'com.android.support:support-annotations:23.0.0'
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.android.support:support-v4:23.0.0'
compile 'com.android.support:design:23.0.0'

2 个答案:

答案 0 :(得分:2)

我遇到了同样的事情。您似乎还需要设置OAuth 2.0凭据。一旦我做到了,它就有效了。

答案 1 :(得分:0)

我认为您尚未在 build.gradle 文件中添加com.android.application。您所指的文档授权请求但不进行身份验证。

要详细了解有关访问Google云端硬盘的身份验证,请参阅Android Quick-start to access Drive REST API上的官方文档。

这包括:

  • 获取SHA1指纹。
  • 启用云端硬盘API
  • 创建新的Android项目
  • 配置项目
  • 添加项目源文件
  • 运行应用

希望这有助于!!