java.lang.IllegalStateException:在API中使用Auth.GOOGLE\u SIGN\u时,不得在GoogleAppClient.Builder中设置作用域

java.lang.IllegalStateException:在API中使用Auth.GOOGLE\u SIGN\u时,不得在GoogleAppClient.Builder中设置作用域,java,android,google-play-services,drive,android-googleapiclient,Java,Android,Google Play Services,Drive,Android Googleapiclient,我正在使用带身份验证api的驱动器api。我需要先登录谷歌账号,然后上传文件到硬盘。问题是,当我只使用未经身份验证的驱动器api时,表示无法登录。我是第一次使用 GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .build(); mGoogleA

我正在使用带身份验证api的驱动器api。我需要先登录谷歌账号,然后上传文件到硬盘。问题是,当我只使用未经身份验证的驱动器api时,表示无法登录。我是第一次使用

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .build();
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();

        Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
        startActivityForResult(signInIntent, 4);
它已成功登录。但当我尝试使用驱动api时,它会给出错误。下面是代码

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .build();
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
                .addApi(Drive.API)
                .addScope(Drive.SCOPE_FILE)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();

        Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
        startActivityForResult(signInIntent, 4);
有什么解决方案可以让我先登录,然后将文件添加到驱动器吗?

试试下面的代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstance);

    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Drive.API)
            .addScope(Drive.SCOPE_FILE)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();
}
然后设置要进行授权的连接代码:

@Override
protected void onStart() {
    super.onStart();
    mGoogleApiClient.connect();
}
我遵循文档-,此文档还提供了如何处理用户以前未授权应用程序的ff

希望这有帮助。

尝试以下代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstance);

    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Drive.API)
            .addScope(Drive.SCOPE_FILE)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();
}
然后设置要进行授权的连接代码:

@Override
protected void onStart() {
    super.onStart();
    mGoogleApiClient.connect();
}
我遵循文档-,此文档还提供了如何处理用户以前未授权应用程序的ff


希望这能有所帮助。

你能包括你的
onConnectionFailed
回调吗?你能包括你的
onConnectionFailed
回调吗?出于某种原因,这段代码不再工作了。。。看起来这个名字并不是他们唯一改成谷歌硬盘的。我试着用提问的方法来解决这个问题,但这和他的错误是一样的。知道它现在是怎么工作的吗?由于某种原因,这个代码不再工作了。。。看起来这个名字并不是他们唯一改成谷歌硬盘的。我试着用提问的方法来解决这个问题,但这和他的错误是一样的。知道它现在是怎么工作的吗?