9

मैं अपने अनुप्रयोग में GoogleSignIn विकल्प प्रदान की है प्रदान करने के बाद भी।'ई/टोकन रिवेस्टर प्राप्त करना: आपके पास OAuth2 संबंधित कॉन्फ़िगरेशन गलत हैं। विस्तृत त्रुटि: INVALID_AUDIENCE 'सही ग्राहक आईडी

यहाँ मेरी कोड है:

public class SignupActivity extends AppCompatActivity { 

    private static final int RC_SIGN_IN = 1; 
    GoogleApiClient mGoogleApiClient; 
    FirebaseAuth mAuth; 
    TextView appName; 
    ProgressDialog signinProgressDialog; 
    CoordinatorLayout coordinatorLayout; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_signup); 
//  Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
//  setSupportActionBar(toolbar); 

     signinProgressDialog = new ProgressDialog(SignupActivity.this); 

     coordinatorLayout = (CoordinatorLayout) findViewById(R.id.signupCoordinatorLayout); 

     // Configure Google Sign In 
     GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
       .requestIdToken(getString(R.string.o_auth_client_id)) 
       .requestEmail() 
       .requestProfile() 
       .requestId() 
       .build(); 

     // Build a GoogleApiClient with access to the Google Sign-In API and the 
     // options specified by gso. 
     mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .enableAutoManage(this /* FragmentActivity */, new GoogleApiClient.OnConnectionFailedListener() { 
        @Override 
        public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 

        } 
       } /* OnConnectionFailedListener */) 
       .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
       .build(); 

     mAuth = FirebaseAuth.getInstance(); 

     findViewById(R.id.sign_in_button).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if (isNetworkAvailable()) { 
        signinProgressDialog.setMessage("Signing in..."); 
        signinProgressDialog.show(); 
        signIn(); 
       } else { 
        Snackbar snackbar = Snackbar 
          .make(coordinatorLayout, "No internet connection!", Snackbar.LENGTH_LONG); 
        snackbar.show(); 
        signinProgressDialog.dismiss(); 
       } 
      } 
     }); 

    } 

    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, update UI appropriately 
       // ... 
       Snackbar snackbar = Snackbar 
         .make(coordinatorLayout, "Error signing in!", Snackbar.LENGTH_LONG); 
       snackbar.show(); 
       signinProgressDialog.dismiss(); 
      } 
     } 
    } 

    private void firebaseAuthWithGoogle(GoogleSignInAccount acct) { 
     Log.d("firebaseAuthWithGoogle", "firebaseAuthWithGoogle:" + acct.getId()); 

     AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null); 
     mAuth.signInWithCredential(credential) 
       .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
        @Override 
        public void onComplete(@NonNull Task<AuthResult> task) { 
         Log.d("signin_successful", "signInWithCredential:onComplete:" + task.isSuccessful()); 

         Intent mainActivityIntent = new Intent(SignupActivity.this, MainActivity.class); 
         mainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
         mainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
         startActivity(mainActivityIntent); 
         signinProgressDialog.dismiss(); 

         // 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("signin_unsuccessful", "signInWithCredential", task.getException()); 
          Toast.makeText(SignupActivity.this, "Authentication failed.", 
            Toast.LENGTH_SHORT).show(); 
          signinProgressDialog.dismiss(); 
         } 
         // ... 
        } 
       }); 
    } 

    @Override 
    public void onBackPressed() { 
     finish(); 
     super.onBackPressed(); 
    } 

    private boolean isNetworkAvailable() { 
     ConnectivityManager connectivityManager 
       = (ConnectivityManager) SignupActivity.this.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
     return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 
    } 
} 

2 ग्राहक आईडी है, एक वेब ग्राहक है और एक अन्य एंड्रॉयड ग्राहक है।

मैं अपने google-services.json फ़ाइल और console.developers.google.com पर अपने प्रोजेक्ट वे सभी मिलान कर रहे हैं के साथ अपने ग्राहक आईडी के जाँच कर ली है। E/TokenRequestor: You have wrong OAuth2 related configurations, please check. Detailed error: INVALID_AUDIENCE 06-27 12:40:14.651 4443-4484/? D/AuthAccountOperation: id token request failed.

क्या संभवतः इस त्रुटि का कारण हो सकता:

लेकिन मैं अभी भी इस त्रुटि हो रही है? ताकि मेरा ऐप्स नहीं रह गया है मेरे कंसोल पर मेरे एप्लिकेशन से जुड़ा है

यह है या यह कुछ और है?

कृपया मुझे बताएं।

+0

मैं अपने एंड्रॉइड ऐप में Google एपीआई का उपयोग करके Google साइन इन कर रहा था। मान लें कि आपकी कॉन्फ़िगरेशन Google दस्तावेज़ के अनुसार समझाई गई है, यहां एक नई बात है जो मुझे करना है। जब मैंने अपना कोड इस्तेमाल किया तो साइन-इन सुविधा ठीक काम करती थी, लेकिन जब मेरे डेवलपर ने इसका इस्तेमाल किया तो उसने इस मुद्दे का सामना किया, मैंने इसे और मेरे डेवलपर की मशीन के लिए "debug.keystore" का उपयोग करके हल किया। यह अच्छी तरह से काम किया। – xrnd

+0

यह मूल रूप से गलत उंगली प्रिंट के कारण होता है। कंसोल के साथ अपनी उंगली प्रिंट सत्यापित करें। – xrnd

+0

और आप यह सत्यापित कैसे करते हैं? –

उत्तर

0

आप गूगल खाते के साथ सफलता के लिए लॉग इन करना चाहते हैं, तो आप इन बनाना चाहिए: 1.upload एक apk गूगल के लिए (जैसे PackageName 'com.example.xxx' & कुंजीस्टोर के SHA1 है 'qwertyuiop ....' है) डेवलपर कंसोल, तो आप क्लाइंट आईडी प्राप्त करते हैं। सही ClientID 2.Use बस हो गया, और सही कुंजीस्टोर फ़ाइल के साथ आपके apk जो SHA1 है पर हस्ताक्षर 'qwertyuiop ...'। आम तौर पर, आप इसे बना सकता है।

फिर भी सफलता के लिए लॉग इन नहीं कर सकते, चरणों में से एक के ऊपर गलत होना चाहिए, यह step.My अनुमान से कदम की जाँच करें, आप KeyStore फ़ाइल अपने debugMode के लिए गलत हो सकता है।

+0

मुझे लगता है कि यह समस्या की प्रकृति के बारे में एक जंगली अनुमान है (सबसे अच्छा); असली जवाब के लायक नहीं; अगर बिल्कुल, यह टिप्पणी होना चाहिए। – GhostCat

+0

क्या आप अनुमान के साथ इसका न्याय कर रहे हैं? क्या आपको Google लॉगिन प्रगति का एहसास है? कीस्टोर और पैकेज नाम का SHA1 इस बारे में चिंतित है। यदि वह सही क्लाइंट आईडी और पैकेजनाम का उपयोग करता है, तो उसे अपने कीस्टोर की जांच करनी चाहिए! – Yachao

+1

जैसा कि कहा गया: यह एक "ठीक" टिप्पणी करेगा; लेकिन एक उत्तर के लिए, ऐसा एक वाक्य कथन बस नहीं करता है। यदि आप अपना जवाब सुधारते हैं तो मुझे अपना "निर्णय" बदलने में कोई फर्क नहीं पड़ता। – GhostCat

2

आप अपने प्रोजेक्ट सेटिंग्स पर प्रत्येक android ऐप के SHA अंगुली की छाप जोड़ने की जरूरत है। यदि आप फायरबेस का उपयोग कर रहे हैं, तो नीचे दिए गए लिंक को अपने प्रोजेक्ट के नाम से संपादित करें और फिर अपने ऐप के लिए फिंगरप्रिंट जोड़ें।

https://console.firebase.google.com/project/{YOUR_PROJECT_NAME}/settings/general/ 
+0

पहले से ही जोड़ा गया है लेकिन काम नहीं कर रहा है। कृपया मेरी मदद करें –

+0

@ निर्वापटेल आप डीबग और रिलीज कीस्ट्रोक फ़ाइलों के लिए प्रमाण पत्र फिंगरप्रिंट जोड़ देंगे। यहां एक [लिंक] है (https://developers.google.com/android/guides/client-auth) जहां डीबग कीस्ट्रोक फ़ाइल को ढूंढना है। – abdllhbyrktr

संबंधित मुद्दे