2014-11-20 9 views
6

Ich versuche, mit der API Google Drive auf Android zu arbeiten, zuerst die Demo mit:Android API Google Drive "Verbindung fehlgeschlagen"

https://github.com/googledrive/android-quickstart

Allerdings habe ich diesen Fehler, die ich nicht lösen kann.

GoogleApiClient Verbindung fehlgeschlagen: Connection {status = SIGN_IN_REQUIRED, Auflösung = PendingIntent {421d40e8: [email protected]}}

@Override 
public void onConnectionFailed(ConnectionResult result) { 
    // Called whenever the API client fails to connect. 
    Log.i(TAG, "GoogleApiClient connection failed: " + result.toString()); 
    if (!result.hasResolution()) { 
     // show the localized error dialog. 
     GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), this, 0).show(); 
     return; 
    } 
    // The failure has a resolution. Resolve it. 
    // Called typically when the app is not yet authorized, and an 
    // authorization 
    // dialog is displayed to the user. 
    try { 
     result.startResolutionForResult(this, REQUEST_CODE_RESOLUTION); 
    } catch (SendIntentException e) { 
     Log.e(TAG, "Exception while starting resolution activity", e); 
     // There was an error with the resolution intent. Try again. 
     mGoogleApiClient.connect(); 
    } 
} 


@Override 
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { 
    if (requestCode == REQUEST_CODE_RESOLUTION) { 

     if (resultCode == RESULT_OK) { 
      Log.i(TAG, "Error resolution success."); 

      // Make sure the app is not already connected or attempting to connect 
      if (!mGoogleApiClient.isConnecting() && 
        !mGoogleApiClient.isConnected()) { 
       mGoogleApiClient.connect(); 
      } 

     } else { 
      GooglePlayServicesUtil.getErrorDialog(requestCode, this, 0).show(); 
     } 

     break; 
    } 
} 
+1

In meinem Fall fahren gehen kann, wurde dieser Fehler verursacht durch etwas des App-Pakets, das nicht mit dem Berechtigungsnachweis übereinstimmt. Man muss sicherstellen, dass der Paketname und SHA1 übereinstimmen müssen. Die Debug-Version, die auf einem Dev-Computer ausgeführt wird, hat möglicherweise einen anderen Paketnamen und SHA1 als die Versionsnummer. – Hong

Antwort

2

Here die Informationen für den Fehler ist, dass Sie empfange. Ich nehme an, Sie sind, aber Sie müssen angemeldet sein, um auf Drive zuzugreifen. Wenn ich die Beispiel-App starte, werde ich am Anfang aufgefordert, ein Konto auszuwählen. Vielleicht haben Sie kein Konto mit dem von Ihnen verwendeten Gerät synchronisiert? Es gibt eine Option "Konto hinzufügen", aber das Verhalten ist möglicherweise anders, wenn Sie keine Konten haben. Die Dokumentation schlägt vor, dass Sie entweder ohne Verwendung der API fortfahren (einfach, weil Sie nicht anmelden können) oder startResolutionForResult(Activity, int) aufrufen, um den Benutzer zur Anmeldung aufzufordern, aber es wäre wahrscheinlich am einfachsten, nur add the account to your device.

+0

Seltsam, ohne etwas in meinem Code zu ändern funktioniert es auf meinem Sony Tablet aber nicht auf dem Samsung O.o – cham

+0

Sind Sie in beiden Geräten mit dem gleichen Konto angemeldet? – Andy

+0

Ja mit dem gleichen Konto – cham

0

Nicht sicher, ob jemand das noch benötigt, aber in meinem Fall hatte ich zwei Google-Konten, also muss ich zuerst wählen, welches Konto ich verwenden möchte. Ich habe diesen Code in der onConnectionFailed

if (!connectionResult.hasResolution()) 
    { 
     // show the localized error dialog. 
     GooglePlayServicesUtil.getErrorDialog(connectionResult.getErrorCode(), mContext, 0).show(); 
     return; 
    } 

    try 
    { 
     connectionResult.startResolutionForResult(mContext, 1); 
    } catch (IntentSender.SendIntentException e) 
    { 
     e.printStackTrace(); 
    } 
3

Dies wegen Fahrlässigkeit Entwickler Teil sein kann (wie es mit mir passiert) - die SHA1 Details, die Sie auf der Konsole sorgen, dass der Produktionsschlüssel und Sie testen auf Debug Modus (die SHA1 Details wären anders). Die Fehlermeldung google drive API, könnte allerdings besser gewesen sein!

1

Sie meine Antwort verweisen hier https://stackoverflow.com/a/41658044/4448757 mit Google-Konto zu verbinden, das funktioniert perfekt nur angemeldeten apk

dann, nachdem Sie für Google

IntentSender intentSender = Drive.DriveApi 
      .newOpenFileActivityBuilder() 
      .build(mGoogleApiClient); 
    try { 
     startIntentSenderForResult(intentSender, DRIVE_CHOOSER_REQUEST, null, 0, 0, 0); 
    } catch (IntentSender.SendIntentException e) { 
     e.printStackTrace(); 
    }