Facebook login in Android fires callback before permissions popup -
when i'm using facebook login in android app, callback called before permissions popup shown. in code, expected behaviour should be:
- user opens app
- user clicks "sign in" button
- fb permissions dialog pops up
- user accepts fb permissions
- a "hi there!" toast message shown
however, actual flow is:
- user opens app
- user clicks "sign in" button
- a "hi there!" toast message shown
- fb permissions dialog pops up
i used code this answer , added button perform login when user clicks on it, instead of on activity creation:
public class mainactivity extends activity implements statuscallback { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); } public void signin(view view) { openrequest open = new openrequest(this); open.setloginbehavior(sessionloginbehavior.suppress_sso); open.setpermissions(arrays.aslist(new string[] { "email", "user_hometown" })); open.setcallback(this); session s = new session(this); s.openforread(open); } @override public void call(session session, sessionstate state, exception exception) { charsequence text = "hi there!"; int duration = toast.length_short; toast toast = toast.maketext(getapplicationcontext(), text, duration); toast.show(); } @override protected void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); if (session.getactivesession() != null) session.getactivesession().onactivityresult(this, requestcode, resultcode, data); } } thanks
you have check when comes correct sessionstate value you.
public void call(session session, sessionstate state, exception exception) { if (state.isopened()) { if (exception == null) { //success } else if (state == sessionstate.closed_login_failed) { //login fail } else if (state.isclosed()) { //logged out... } } }
Comments
Post a Comment