5

Sto creando un'app e sto integrando l'API di Google Drive per Android. Ho un'attività principale, quindi un frammento che si apre porta a Google Drive. Tuttavia, quando provo ad accedere (non importa quale account gmail, ho provato quelli esistenti, crearne di nuovi, qualunque cosa) ottengo ConnectionResult codice di errore 17 SIGN_IN_FAILED. L'app è autorizzata nella console degli sviluppatori e l'API di Drive è abilitata. Non so cos'altro fare.Errore connessione Android API Google Drive Errore

Ecco il codice rilevante:

public class FileSharingFragment extends Fragment implements 
    GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { 

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

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

    @Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View rootView = inflater.inflate(R.layout.fragment_file_sharing, container, false); 
    users = (TextView) rootView.findViewById(R.id.users); 
    getActivity().setTitle("Files"); 
    return rootView; 
} 

    @Override 
public void onActivityResult(int requestCode, int resultCode, 
           Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == REQUEST_CODE_RESOLUTION && resultCode == Activity.RESULT_OK) { 
     mGoogleApiClient.connect(); 
    } 
} 

@Override 
public void onConnectionFailed(ConnectionResult result) { 
    Log.i(TAG, "GoogleApiClient connection failed: " + result.toString()); 
    if (!result.hasResolution()) { 
     // show the localized error dialog. 
     GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), getActivity(), 0).show(); 
     Log.i("file sharing fragment", "error code " + result.getErrorCode()); 
     return; 
    } 
    try { 
     result.startResolutionForResult(getActivity(), REQUEST_CODE_RESOLUTION); 
    } catch (IntentSender.SendIntentException e) { 
     Log.e(TAG, "Exception while starting resolution activity", e); 
    } 
} 

E chiamarlo dalla principale attività che uso

Fragment fragment = FileSharingFragment.newInstance(); 
FragmentManager fragmentManager = getFragmentManager(); 
     fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit(); 

non posso per la vita di me capire perché non me lo permette accedi.

+0

Hai seguito correttamente tutti i passaggi indicati [qui] (https://developers.google.com/drive/android/auth#generate_the_signing_certificate_fingerprint_and_register_your_application)? – Exception

+0

Passare attraverso [questa risposta] (http://stackoverflow.com/questions/21280794/error-connectionresultstatuscode-internal-error-resolution-null#22738951). – Exception

risposta

0

Sulla Google Developers Console vai su API & Auth -> Credenziali e verifica che il nome del pacchetto sia esattamente lo stesso del nome del pacchetto dell'applicazione.

1

Probabilmente sapete ormai che le vostre Developers Console esigenze 3 cose:

1/SHA1 di yout APK
2/il pacchetto di nome
3/e-mail/nome del prodotto nella schermata di consenso

Supponendo che tutto vada bene, ecco il doppio controllo dell'ultimo resort che uso spesso:
- apri (decomprimi) il tuo xxxx.APK usando un unzipper (come 7zip), trova CERT.RSA.
- eseguire 'keytool -printcert -file ......... \ CERT.RSA'
Torna alla console e confronta nuovamente gli SHA1.

Good Luck

+0

BTW, se sei su Android Studio, puoi provare questo [DEMO] (https://github.com/seanpjanson/GDAADemo), specificamente passo dopo [questo guanto di sfida] (https://github.com/seanpjanson/ GDAADemo/blob/master/src/main/java/com/andyscan/gdrtdemo/MainActivity.java # L90) per vedere se ti porta ovunque – seanpj

1

Potrebbe sembrare ovvio, ma se hai inserito la propria impronta digitale sulla console sviluppatore e impostare l'API lì e sta ancora ricevendo SIGN_IN_FAILED assicurarsi che si sta effettivamente utilizzando l'APK firmato!

È troppo facile da eseguire installDebug da Gradle e dimenticare. Io di solito impostare e passare attraverso i menu (costruire>Genera Firmata APK ...) in Android Studio quando sto lavorando con Google SDK

0

Assicurarsi che si è generato un OAuth ID cliente 2.0 al contrario di un API normale chiave

Secondo Google docs for youtube API - l'applicazione deve inviare una 2.0 del token OAuth con qualsiasi richiesta che accede ai dati degli utenti privati ​​

0

Provare a disinstallare l'applicazione e iniziare il processo di debug in tutto (se si stanno usando il debug.keystore.