android - Facebook LoginManager callback not called -
i using facebook sdk 4.1. have added fb login button fragment , set code below:
@override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view view= inflater.inflate(r.layout.fragment_login, container, false); loginbutton loginbutton = (loginbutton) view.findviewbyid(r.id.login_button); loginbutton.setreadpermissions(arrays.aslist("public_profile", "email", "user_birthday", "user_about_me")); loginbutton.setfragment(this); return view; } then on have activity this
public class mainactivity extends appcompatactivity { private callbackmanager callbackmanager; private accesstokentracker accesstokentracker; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); facebooksdk.sdkinitialize(getapplicationcontext()); setcontentview(r.layout.activity_main); callbackmanager = callbackmanager.factory.create(); loginmanager.getinstance().registercallback(callbackmanager, new facebookcallback<loginresult>() { @override public void onsuccess(loginresult loginresult) { log.i("login","success"); } @override public void oncancel() { log.i("login","cancel"); } @override public void onerror(facebookexception e) { log.i("login","error"); } }); accesstokentracker = new accesstokentracker() { @override protected void oncurrentaccesstokenchanged( accesstoken oldaccesstoken, accesstoken currentaccesstoken) { // app code if(currentaccesstoken.isexpired()){ loginmanager.getinstance().logout(); } } }; accesstoken accesstoken=accesstoken.getcurrentaccesstoken(); if(accesstoken==null||accesstoken.isexpired()){ loginmanager.getinstance().logout(); getsupportfragmentmanager().begintransaction() .replace(r.id.frame_container, new loginfragment()) .commitallowingstateloss(); } } @override protected void onresume() { super.onresume(); } @override protected void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); callbackmanager.onactivityresult(requestcode, resultcode, data); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.menu_main, menu); return true; } @override public boolean onoptionsitemselected(menuitem item) { // handle action bar item clicks here. action bar // automatically handle clicks on home/up button, long // specify parent activity in androidmanifest.xml. int id = item.getitemid(); //noinspection simplifiableifstatement if (id == r.id.action_settings) { return true; } return super.onoptionsitemselected(item); } } the proble callbackmanager.onactivityresult(requestcode, resultcode, data); in onactivityresult method called loginmanager.getinstance().registercallback(callbackmanager, new facebookcallback()... never called. why happening?
i removed loginbutton.setfragment(this); line fragment , working
Comments
Post a Comment