android - Facebook login in fragment -
i use facebook login in app. have registred app , added sdk project. however, tried follow tutorial documentation nothing worked (i need id , email profile , send to server).
fragment
public class loginfragment extends fragment { @bindview(r.id.ivlogo) imageview ivlogo; @bindview(r.id.email) edittext edemail; @bindview(r.id.password) edittext edpassword; @bindview(r.id.btnfblogin) loginbutton btnfblogin; private callbackmanager callbackmanager; private accesstokentracker accesstokentracker; private profiletracker profiletracker; string email, password, id; user user; public loginfragment() { // required empty public constructor } public static loginfragment newinstance() { loginfragment fragment = new loginfragment(); bundle args = new bundle(); fragment.setarguments(args); return fragment; } @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); loginmanager.getinstance().registercallback(callbackmanager, new facebookcallback<loginresult>() { @override public void onsuccess(loginresult loginresult) { // app code log.i("success", "success"); } @override public void oncancel() { // app code } @override public void onerror(facebookexception exception) { // app code } }); } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view view = inflater.inflate(r.layout.fragment_login_screen, container, false); butterknife.bind(this, view); btnfblogin.setreadpermissions("email"); btnfblogin.setfragment(this); // callback registration btnfblogin.registercallback(callbackmanager, new facebookcallback<loginresult>() { @override public void onsuccess(loginresult loginresult) { // app code } @override public void oncancel() { // app code } @override public void onerror(facebookexception exception) { // app code } }); return view; } @override public void onviewcreated(view view, @nullable bundle savedinstancestate) { super.onviewcreated(view, savedinstancestate); } @override public void onresume() { super.onresume(); ((mainactivity) getactivity()).getsupportactionbar().hide(); } private void fbcallback() { facebookcallback<loginresult> callback = new facebookcallback<loginresult>() { @override public void onsuccess(loginresult loginresult) { accesstoken accesstoken = loginresult.getaccesstoken(); profile profile = profile.getcurrentprofile(); graphrequest request = graphrequest.newmerequest( loginresult.getaccesstoken(), new graphrequest.graphjsonobjectcallback() { @override public void oncompleted( jsonobject object, graphresponse response) { try { string email = object.getstring("email"); } catch (jsonexception e) { e.printstacktrace(); } } }); } @override public void oncancel() { } @override public void onerror(facebookexception e) { } }; btnfblogin.setreadpermissions("email"); btnfblogin.registercallback(callbackmanager, callback); } private void loginemail() { factoryapi.getinstancelogin().login("hardcoded mail", "hardcoded password").enqueue(new callback<userresponse>() { @override public void onresponse(call<userresponse> call, response<userresponse> response) { if (response.issuccessful()) { user = response.body().getuser(); startactivity(); } else { toast.maketext(getcontext(), r.string.email_password_is_not_right, toast.length_long).show(); } } @override public void onfailure(call<userresponse> call, throwable t) { } }); } private void loginfb() { factoryapi.getserviefblogin().loginfb(email, id).enqueue(new callback<userresponse>() { @override public void onresponse(call<userresponse> call, response<userresponse> response) { if (response.issuccessful()) { user = response.body().getuser(); startactivity(); } else { toast.maketext(getcontext(), "something went wrong", toast.length_long).show(); } } @override public void onfailure(call<userresponse> call, throwable t) { log.e("error", "error"); } }); } public void getemailpassword() { email = edemail.gettext().tostring(); password = edpassword.gettext().tostring(); if (email.isempty() || password.isempty()) { toast.maketext(getcontext(), r.string.empty_properties, toast.length_short).show(); } } public static boolean emailvalidation(charsequence target) { return !textutils.isempty(target) && patterns.email_address.matcher(target).matches(); } public void startactivity() { intent intent = new intent(getcontext(), accountactivity.class); intent.putextra("account", user); startactivity(intent); } @override public void onactivityresult(int requestcode, int responsecode, intent intent) { super.onactivityresult(requestcode, responsecode, intent); callbackmanager.onactivityresult(requestcode, responsecode, intent); } @onclick({r.id.sign_up_email, r.id.btnfblogin}) public void onclick(view view) { switch (view.getid()) { case r.id.sign_up_email: loginemail(); case r.id.btnfblogin: break; } } private void getprofile(profile profile){ if(profile != null){ id = profile.getid(); } } }
as facebook login in fragment not in activity, callback comes in onactivityresult() of activity in fragment attached.
you can check after override onactivityresult() of activity, , put debug point there.
after getting result in activity onactivityresult() method, can send fragment's onactivityresult().
hope help.
Comments
Post a Comment