Android- Integrating Google Sign In ->status{statuscode=developer_error, resolution=null} -
i trying couple of days, still not able find solution. in end, used code here https://github.com/googlesamples/google-services.
@override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_login); mstatustextview = (textview) findviewbyid(r.id.status); // button listeners findviewbyid(r.id.sign_in_button).setonclicklistener(this); findviewbyid(r.id.sign_out_button).setonclicklistener(this); findviewbyid(r.id.disconnect_button).setonclicklistener(this); // [start configure_signin] // configure sign-in request user's id, email address, , basic // profile. id , basic profile included in default_sign_in. googlesigninoptions gso = new googlesigninoptions.builder(googlesigninoptions.default_sign_in) .requestemail() .build(); // [end configure_signin] // [start build_client] // 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(); // [end build_client] // [start customize_button] // customize sign-in button. sign-in button can displayed in // multiple sizes , color schemes. can contextually // rendered based on requested scopes. example. red button may // displayed when google+ scopes requested, white button // may displayed when basic profile requested. try adding // scopes.plus_login scope googlesigninoptions see // difference. signinbutton signinbutton = (signinbutton) findviewbyid(r.id.sign_in_button); signinbutton.setsize(signinbutton.size_standard); signinbutton.setscopes(gso.getscopearray()); // [end customize_button] mnotificationmanager = (notificationmanager) this.getapplicationcontext().getsystemservice(this.notification_service); typeface mytypeface = typeface.createfromasset(getassets(), "big daddy st.ttf"); typeface mytypefacefacebook = typeface.createfromasset(getassets(), "big daddy st.ttf"); mainimage = (imageview) findviewbyid(r.id.imageview1); textview textview1 = (textview) findviewbyid(r.id.textview1); textview1.setonclicklistener(this); textview1.settypeface(mytypeface); button button = (button) findviewbyid(r.id.btn_login_facebook); button.setonclicklistener(this); button.settypeface(mytypefacefacebook); } @override public void onstart() { super.onstart(); optionalpendingresult<googlesigninresult> opr = auth.googlesigninapi.silentsignin(mgoogleapiclient); if (opr.isdone()) { // if user's cached credentials valid, optionalpendingresult "done" // , googlesigninresult available instantly. log.d(tag, "got cached sign-in"); googlesigninresult result = opr.get(); handlesigninresult(result); } else { // if user has not signed in on device or sign-in has expired, // asynchronous branch attempt sign in user silently. cross-device // single sign-on occur in branch. showprogressdialog(); opr.setresultcallback(new resultcallback<googlesigninresult>() { @override public void onresult(googlesigninresult googlesigninresult) { hideprogressdialog(); handlesigninresult(googlesigninresult); } }); } } // [start onactivityresult] @override public void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); // result returned launching intent googlesigninapi.getsigninintent(...); if (requestcode == rc_sign_in) { googlesigninresult result = auth.googlesigninapi.getsigninresultfromintent(data); handlesigninresult(result); } } // [end onactivityresult] // [start handlesigninresult] private void handlesigninresult(googlesigninresult result) { log.d(tag, "handlesigninresult:" + result.issuccess()); if (result.issuccess()) { // signed in successfully, show authenticated ui. googlesigninaccount acct = result.getsigninaccount(); mstatustextview.settext(getstring(r.string.signed_in_fmt, acct.getdisplayname())); updateui(true); } else { // signed out, show unauthenticated ui. updateui(false); } } // [end handlesigninresult] // [start signin] private void signin() { intent signinintent = auth.googlesigninapi.getsigninintent(mgoogleapiclient); startactivityforresult(signinintent, rc_sign_in); } // [end signin] // [start signout] private void signout() { auth.googlesigninapi.signout(mgoogleapiclient).setresultcallback( new resultcallback<status>() { @override public void onresult(status status) { // [start_exclude] updateui(false); // [end_exclude] } }); } // [end signout] // [start revokeaccess] private void revokeaccess() { auth.googlesigninapi.revokeaccess(mgoogleapiclient).setresultcallback( new resultcallback<status>() { @override public void onresult(status status) { // [start_exclude] updateui(false); // [end_exclude] } }); } // [end revokeaccess] private void showprogressdialog() { if (mprogressdialog == null) { mprogressdialog = new progressdialog(this); mprogressdialog.setmessage(getstring(r.string.loading)); mprogressdialog.setindeterminate(true); } mprogressdialog.show(); } private void hideprogressdialog() { if (mprogressdialog != null && mprogressdialog.isshowing()) { mprogressdialog.hide(); } } private void updateui(boolean signedin) { if (signedin) { findviewbyid(r.id.sign_in_button).setvisibility(view.gone); // findviewbyid(r.id.sign_out_and_disconnect).setvisibility(view.visible); } else { mstatustextview.settext(r.string.signed_out); findviewbyid(r.id.sign_in_button).setvisibility(view.visible); // findviewbyid(r.id.sign_out_and_disconnect).setvisibility(view.gone); } } @override public void onclick(view view) { // intent signupintent = new intent(this,signupscreen.class); // startactivity(signupintent); if(view.getid() == r.id.textview1){ intent signupintent = new intent(this, signupscreen.class); startactivity(signupintent); } // testing google sign in if(view.getid() == r.id.btn_login_facebook){ intent intent = new intent(this, testgooglesignin.class); //notification // notificationwithbutton(); startactivity(intent); } if(view.getid()==r.id.sign_in_button){ // toast.maketext(this, "start sign process", toast.length_short).show(); signin(); } } void notificationwithbutton(){ if (android.os.build.version.sdk_int >= build.version_codes.jelly_bean) { // prepare intent triggered if notification button pressed intent intent = new intent(this, mainactivity.class); pendingintent pintent = pendingintent.getactivity(this, 0, intent, 0); // building notifcation notificationcompat.builder nbuilder = (notificationcompat.builder) new notificationcompat.builder(this) .setsmallicon(r.mipmap.ic_launcher) // notification icon .setcontenttitle("button notification") // notification title .setcontenttext("expand show buttons...") // content text .setticker("showing button notification") // status bar message .addaction(r.drawable.common_google_signin_btn_icon_dark, "accept", pintent) // accept notification button .addaction(r.drawable.common_google_signin_btn_icon_dark_normal, "cancel", pintent); // cancel notification button mnotificationmanager.notify(1001, nbuilder.build()); } else { toast.maketext(this, "you need higher version", toast.length_long).show(); } } @override public void onconnectionfailed(@nonnull connectionresult connectionresult) { }
this manifest file (meta-tags)
<meta-data android:name="com.google.android.geo.api_key" android:value="@string/google_maps_key" /> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
i included key google maps, shows in structure
when sign in, nothing happens. result null.
i trying authenticate user login via gmail application
do need create key gmail login? well, created on credentials page, using same sha-1 (debug), use key?
i followed google sign in error status{statuscode=developer_error, resolution=null} there no mismatch.
your appreciated.
Comments
Post a Comment