2016-06-12 114 views
0

我已經嘗試了很多次,重試並遵循Firebase Android Codelab中的確切步驟。我試圖用Google帳戶登錄,但由於某種原因,它不成功。Google登錄錯誤-Firebase android codelab

SignInActivity.java

package com.google.firebase.codelab.friendlychat; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.annotation.NonNull; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.view.View; 
import android.widget.Toast; 

import com.google.android.gms.auth.api.Auth; 
import com.google.android.gms.auth.api.signin.GoogleSignInAccount; 
import com.google.android.gms.auth.api.signin.GoogleSignInOptions; 
import com.google.android.gms.auth.api.signin.GoogleSignInResult; 
import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.SignInButton; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.tasks.OnCompleteListener; 
import com.google.android.gms.tasks.Task; 
import com.google.firebase.auth.AuthCredential; 
import com.google.firebase.auth.AuthResult; 
import com.google.firebase.auth.FirebaseAuth; 
import com.google.firebase.auth.GoogleAuthProvider; 

public class SignInActivity extends AppCompatActivity implements 
     GoogleApiClient.OnConnectionFailedListener, View.OnClickListener { 
    private FirebaseAuth mFirebaseAuth; 
    private static final String TAG = "SignInActivity"; 
    private static final int RC_SIGN_IN = 9001; 

    private SignInButton mSignInButton; 

    private GoogleApiClient mGoogleApiClient; 

    // Firebase instance variables 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_sign_in); 
     // Initialize FirebaseAuth 
     mFirebaseAuth = FirebaseAuth.getInstance(); 
     // Assign fields 
     mSignInButton = (SignInButton) findViewById(R.id.sign_in_button); 

     // Set click listeners 
     mSignInButton.setOnClickListener(this); 

     // Configure Google Sign In 
     GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
       .requestIdToken(getString(R.string.default_web_client_id)) 
       .requestEmail() 
       .build(); 
     mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) 
       .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
       .build(); 

     // Initialize FirebaseAuth 
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.sign_in_button: 
       signIn(); 
       break; 
     } 
    } 
    private void signIn() { 
     Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
     startActivityForResult(signInIntent, RC_SIGN_IN); 
    } 
    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); 
     if (requestCode == RC_SIGN_IN) { 
      GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
      if (result.isSuccess()) { 
       // Google Sign In was successful, authenticate with Firebase 
       GoogleSignInAccount account = result.getSignInAccount(); 
       firebaseAuthWithGoogle(account); 
      } else { 
       // Google Sign In failed 
       Log.e(TAG, "Google Sign In failed." + result.toString()); 
      } 
     } 
    } 
    private void firebaseAuthWithGoogle(GoogleSignInAccount acct) { 
     Log.d(TAG, "firebaseAuthWithGooogle:" + acct.getId()); 
     AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null); 
     mFirebaseAuth.signInWithCredential(credential) 
       .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
        @Override 
        public void onComplete(@NonNull Task<AuthResult> task) { 
         Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful()); 

         // If sign in fails, display a message to the user. If sign in succeeds 
         // the auth state listener will be notified and logic to handle the 
         // signed in user can be handled in the listener. 
         if (!task.isSuccessful()) { 
          Log.w(TAG, "signInWithCredential", task.getException()); 
          Toast.makeText(SignInActivity.this, "Authentication failed.", 
            Toast.LENGTH_SHORT).show(); 
         } else { 
          startActivity(new Intent(SignInActivity.this, MainActivity.class)); 
          finish(); 
         } 
        } 
       }); 
    } 

    @Override 
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
     // An unresolvable error has occurred and Google APIs (including Sign-In) will not 
     // be available. 
     Log.d(TAG, "onConnectionFailed:" + connectionResult); 
     Toast.makeText(this, "Google Play Services error.", Toast.LENGTH_SHORT).show(); 
    } 
} 

HAVE加入我的SHA1關鍵。 而在結果谷歌的標誌是:[email protected]c8

我以前有一個錯誤代碼是這樣的:Couldn't connect to Google API client: ConnectionResult{statusCode=API_UNAVAILABLE, resolution=null} 但我敢肯定statusCode是不同的,因爲我失去了我的錯誤無法找到它。如果有人能告訴我如何重做它,這將是一件好事,所以我可以添加信息。

logcat的( 「錯誤」 的標籤):(我敢肯定,這是沒用的)

06-12 22:07:09.353 5049-5064/com.google.firebase.codelab.friendlychat E/DynamiteModule: Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor" on path: DexPathList[[zip file "/data/app/com.google.firebase.codelab.friendlychat-6.apk"],nativeLibraryDirectories=[/data/app-lib/com.google.firebase.codelab.friendlychat-6, /vendor/lib, /system/lib]] 
06-12 22:07:09.363 5049-5064/com.google.firebase.codelab.friendlychat E/DynamiteModule: Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor" on path: DexPathList[[zip file "/data/app/com.google.firebase.codelab.friendlychat-6.apk"],nativeLibraryDirectories=[/data/app-lib/com.google.firebase.codelab.friendlychat-6, /vendor/lib, /system/lib]] 
06-12 22:07:09.543 5049-5049/com.google.firebase.codelab.friendlychat E/DynamiteModule: Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.android.gms.crash.ModuleDescriptor" on path: DexPathList[[zip file "/data/app/com.google.firebase.codelab.friendlychat-6.apk"],nativeLibraryDirectories=[/data/app-lib/com.google.firebase.codelab.friendlychat-6, /vendor/lib, /system/lib]] 
06-12 22:07:09.693 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.google.firebase.codelab.friendlychat.MainActivity.access$super 
06-12 22:07:09.693 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.google.firebase.codelab.friendlychat.MainActivity.access$super 
06-12 22:07:09.693 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.media.session.MediaController', referenced from method com.google.firebase.codelab.friendlychat.MainActivity.access$super 
06-12 22:07:09.693 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.widget.Toolbar', referenced from method com.google.firebase.codelab.friendlychat.MainActivity.access$super 
06-12 22:07:09.703 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.app.ActivityManager$TaskDescription', referenced from method com.google.firebase.codelab.friendlychat.MainActivity.access$super 
06-12 22:07:09.703 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.google.firebase.codelab.friendlychat.MainActivity.access$super 
06-12 22:07:09.703 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.google.firebase.codelab.friendlychat.MainActivity.access$super 
06-12 22:07:09.713 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.google.firebase.codelab.friendlychat.MainActivity.access$super 
06-12 22:07:09.723 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.app.assist.AssistContent', referenced from method com.google.firebase.codelab.friendlychat.MainActivity.access$super 
06-12 22:07:09.723 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.view.SearchEvent', referenced from method com.google.firebase.codelab.friendlychat.MainActivity.access$super 
06-12 22:07:09.733 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.google.firebase.codelab.friendlychat.MainActivity.access$super 
06-12 22:07:10.073 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.google.firebase.codelab.friendlychat.SignInActivity.access$super 
06-12 22:07:10.073 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.google.firebase.codelab.friendlychat.SignInActivity.access$super 
06-12 22:07:10.073 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.media.session.MediaController', referenced from method com.google.firebase.codelab.friendlychat.SignInActivity.access$super 
06-12 22:07:10.073 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.widget.Toolbar', referenced from method com.google.firebase.codelab.friendlychat.SignInActivity.access$super 
06-12 22:07:10.083 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.app.ActivityManager$TaskDescription', referenced from method com.google.firebase.codelab.friendlychat.SignInActivity.access$super 
06-12 22:07:10.083 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.google.firebase.codelab.friendlychat.SignInActivity.access$super 
06-12 22:07:10.083 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.google.firebase.codelab.friendlychat.SignInActivity.access$super 
06-12 22:07:10.083 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.google.firebase.codelab.friendlychat.SignInActivity.access$super 
06-12 22:07:10.093 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.app.assist.AssistContent', referenced from method com.google.firebase.codelab.friendlychat.SignInActivity.access$super 
06-12 22:07:10.093 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.view.SearchEvent', referenced from method com.google.firebase.codelab.friendlychat.SignInActivity.access$super 
06-12 22:07:10.093 5049-5049/com.google.firebase.codelab.friendlychat E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.google.firebase.codelab.friendlychat.SignInActivity.access$super 
06-12 22:07:20.113 5049-5064/com.google.firebase.codelab.friendlychat E/DynamiteModule: Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor" on path: DexPathList[[zip file "/data/app/com.google.firebase.codelab.friendlychat-6.apk"],nativeLibraryDirectories=[/data/app-lib/com.google.firebase.codelab.friendlychat-6, /vendor/lib, /system/lib]] 
06-12 22:07:32.205 5049-5049/com.google.firebase.codelab.friendlychat E/SignInActivity: Google Sign In f[email protected]42106be8 
+1

堆棧溢出不是調試應用程序的好方法,因爲我們無法看到代碼中發生了什麼。什麼是工作,什麼不是?您是否已經完成代碼並查看調用哪些方法?你檢查了logcat中顯示的內容嗎? –

+0

@FrankvanPuffelen嘿,對於不明確的問題抱歉。我認爲沒有任何東西顯示出來,顯然它在'onActivityResult(...)',if(result.isSuccess())'這一行沒有成功,因爲'result'不成功。我將編輯帖子幷包含我的logcat。我想感謝您不要低估我的問題並要求澄清。 –

+0

你並沒有將google集成到app.first中,而是整合了Google plus ..並在你的項目中添加了google-json。你的logcat的最後一行...谷歌登錄f[email protected]42106be8 –

回答

0

原來有什麼不對勁,我谷歌-services.json,重新下載,它解決了我的問題。

+0

是否從Firebase或谷歌雲重新下載? – klutch

+0

@klutch Firebase –

+0

我沒有解決它。哈哈。要找到另一種方式。謝謝! – klutch