问题
I am using drive api with authentication api. I need to login to google account first then upload files to drive. Problem is when i use only drive api without authentication is says unable to sign in. I signed in first using
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);
it logged in successfully. But when i try to use drive api with this it gives error. Following is the code
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);
Any solution how i can login first then add files to drive?
回答1:
Try this code:
@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();
}
Then set the connection code for authorization to occur:
@Override
protected void onStart() {
super.onStart();
mGoogleApiClient.connect();
}
I am following the documentation - Authorizing Android Apps, this documentation also provide give on how to handle ff the user has not previously authorized the application.
Hope this helps.
来源:https://stackoverflow.com/questions/44078440/java-lang-illegalstateexception-must-not-set-scopes-in-googleapiclient-builder