5

Tworzę aplikację i integruję w niej interfejs API Dysk Google Android. Mam główną działalność, a następnie fragment, który otwiera się, prowadząc do dysku Google. Jednakże, gdy próbuję się zalogować (nie ma znaczenia, jakie konto Gmail, wypróbowałem istniejące, tworząc nowe, cokolwiek) otrzymuję kod błędu ConnectionResult 17 SIGN_IN_FAILED. Aplikacja jest autoryzowana w konsoli programisty, a interfejs API Dysku jest włączony. Nie wiem, co jeszcze mogę zrobić.Dysk Google Android API ConnectionResult Error

Oto odpowiedni kod:

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); 
    } 
} 

i wezwać go z głównej działalności używam

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

nie mogę dla życia mnie dowiedzieć się, dlaczego nie pozwoli mnie zaloguj się.

+0

Czy wykonałeś wszystkie kroki poprawnie podane [tutaj] (https://developers.google.com/drive/android/auth#generate_the_signing_certificate_fingerprint_and_register_your_application)? – Exception

+0

Przejdź przez [tę odpowiedź] (http://stackoverflow.com/questions/21280794/error-connectionresultstatuscode-internal-error-resolution-null#22738951). – Exception

Odpowiedz

0

Przez Google Developers Console przejdź do API & Auth -> Poświadczenia i sprawdź, czy nazwa pakietu jest dokładnie taka sama, jak nazwa pakietu aplikacji.

1

Zapewne wiecie już, że twoi Developers Console potrzeby 3 rzeczy:

1/SHA1 z yout APK
2/pakiet nazwa
3/email/Nazwa produktu w Ekranie zgody

Zakładając, że wszystko jest w porządku, oto ostatnia metoda podwójnego sprawdzenia, której często używam:
- otwórz (rozpakuj) swój xxxx.APK używając rozpakowania (jak 7zip), znajdź CERT.RSA.
- uruchom 'keytool -printcert -file ......... \ CERT.RSA'
Powróć do konsoli i porównaj ponownie SHA1.

Powodzenia

+0

BTW, jeśli korzystasz z Android Studio, możesz spróbować tego [DEMO] (https://github.com/seanpjanson/GDAADemo), w szczególności przejdź przez [tę rękawicę] (https://github.com/seanpjanson/ GDAADemo/blob/master/src/main/java/com/andyscan/gdrtdemo/MainActivity.java # L90), aby sprawdzić, czy dostaniesz się gdziekolwiek – seanpj

1

Mogłoby się wydawać oczywiste, ale jeśli podasz swój odcisk palca na konsoli programisty i skonfigurować API tam i wciąż coraz SIGN_IN_FAILED upewnij się, że rzeczywiście przy podpisany APK!

Jest zbyt łatwo uruchomić installDebug z Gradle i zapomnieć. I zazwyczaj ustawić go i przejść przez menu (Budowanie>Generowanie Signed APK ...) w Android Studio kiedy pracuję z Google SDK

0

Upewnij się, że masz wygenerowany identyfikator OAuth 2.0 Client w przeciwieństwie do zwykłego API klucz

Według Google docs for youtube API - Twoja aplikacja musi wysłać OAuth 2.0 żeton z każdego wniosku, że dostęp do prywatnych danych użytkownika

0

Spróbuj odinstalować aplikację i rozpoczęciem procesu debugowania całego (jeżeli używają debug.keystore.

Powiązane problemy