android - Why Google sign in result is null when application is uploaded to PlayStore -
when test application's app_release.apk on android phones google sign in result true. when upload on playstore or update it's version , download playstore, google handle sign in result null, there not allowing me authenticate users using google accounts. 1 knows screwing? idea problem, please me.
baseactivity.java public abstract class baseactivity extends appcompatactivity implements googleapiclient.onconnectionfailedlistener {
protected string mprovider, mencodedemail; protected googleapiclient mgoogleapiclient; private static final string tag = "baseactivity"; private firebaseauth mauth; private firebaseauth.authstatelistener mauthlistener, mauthlistener1; protected firebase mfirebaseref; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); /* setup google api object allow google logins */ googlesigninoptions gso = new googlesigninoptions.builder(googlesigninoptions.default_sign_in) .requestidtoken(getstring(r.string.default_web_client_id)) .requestemail() .build(); /** * build googleapiclient access google sign-in api , * options specified gso. */ mgoogleapiclient = new googleapiclient.builder(this) .enableautomanage(this /* fragmentactivity */, /* onconnectionfailedlistener */) .addapi(auth.google_sign_in_api, gso) .build(); /*in oncreate() method, initialize firebaseauth instance , authstatelistner * method can track user signs in or out*/ mauth = firebaseauth.getinstance(); /* mauthlistener = new firebaseauth.authstatelistener() { @override public void onauthstatechanged(@nonnull firebaseauth firebaseauth) { firebaseuser user = firebaseauth.getcurrentuser(); if (user != null) { // user signed in log.d(tag, "onauthstatechanged:signed_in:" + user.getuid()); } else { // user signed out takeusertologinscreenonunauth(); log.d(tag, "onauthstatechanged:signed_out"); } // ... } };*/ /** * getting mprovider , mencodedemail sharedpreferences */ final sharedpreferences sp = preferencemanager.getdefaultsharedpreferences(baseactivity.this); /* mencodedemail , mprovider sharedpreferences, use null default value */ mencodedemail = sp.getstring(constants.key_encoded_email, null); mprovider = sp.getstring(constants.key_provider, null); loginactivity.java
googlesigninaccount mgoogleaccount; private final context mcontext = this; private firebaseauth mauth; private string idtoken; private string name, email, phonenumber; private string photo; private string circle; private string preferredcircle; private uri photouri; private string mencodedemail; private boolean isselectspinner1 = false, isselectspinner2 = false; materialspinner spinner1, spinner2; //private firebaseauth mauth; //storage database variables private storagereference mimagestorage; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.login); } */ public void initializescreen() { /* setup google sign in */ setupgooglesignin(); } /** * show error toast users */ private void showerrortoast(string message) { toast.maketext(loginactivity.this, message, toast.length_long).show(); } /** * google sign in code * * code boiler plate * https://developers.google.com/identity/sign-in/android/start-integrating * , * https://github.com/googlesamples/google-services/blob/master/android/signin/app/src/main/java/com/google/samples/quickstart/signin/signinactivity.java * * big picture steps are: * 1. user clicks sign in google button * 2. intent started sign in. * - if connection fails caught in onconnectionfailed callback * - if finishes, onactivityresult called correct request code. * 3. if sign in successful, set mgoogleaccount current account , * call googleoauthtokenandlogin * 4. getgoogleoauthtokenandlogin launches asynctask oauth2 token google. * 5. once token retrieved available in onpostexecute method of * asynctask. **this token required firebase** */ /* sets google sign in button : https://developers.google.com/android/reference/com/google/android/gms/common/signinbutton */ private void setupgooglesignin() { button signinbutton = (button)findviewbyid(r.id.login_with_google); signinbutton.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { if(!isselectspinner1 && circle == null){ spinner1.seterror("please select current circle(city) in posted"); } else if(!isselectspinner2 && preferredcircle == null ) { spinner2.seterror("please select preferred circle in want work or move"); }else{ onsigningooglepressed(v); } } }); } /** * sign in google plus when user clicks "sign in google" textview (button) */ public void onsigningooglepressed(view view) { intent signinintent = auth.googlesigninapi.getsigninintent(mgoogleapiclient); startactivityforresult(signinintent, rc_google_login); log.d(tag, "signingooglepressed"); // mauthprogressdialog.show(); } @override public void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); /* result returned launching intent googlesigninapi.getsigninintent(...); */ if (requestcode == rc_google_login) { googlesigninresult result = auth.googlesigninapi.getsigninresultfromintent(data); handlesigninresult(result); } } /** * callback triggered when startactivityforresult finishes. requestcode maps * value passed startactivityforresult. */ private void handlesigninresult(googlesigninresult result) { log.e(log_tag, "handlesigninresult:" + result.issuccess()); if (result.issuccess()) { /* signed in successfully, oauth token */ mgoogleaccount = result.getsigninaccount(); firebaseauthwithgoogle(mgoogleaccount); //getgoogleoauthtokenandlogin(); } else { if (result.getstatus().getstatuscode() == googlesigninstatuscodes.sign_in_cancelled) { showerrortoast("the sign in cancelled. make sure you're connected internet , try again."); } else { // showerrortoast("error handling sign in: " + result.getstatus().getstatusmessage()); } // mauthprogressdialog.dismiss(); } } i have checked google-services.json file package name same in project.
make sure sha1 keys same in both firebase console , andeoid developer console. link project in firebase console going settings linking tab i.e. package name should present.
Comments
Post a Comment