Android: post to facebook programatically with FB SDK 4.x -
i want post facebook without dialog, programatically, trying
public void login(callbackmanager callbackmanager) { loginmanager.getinstance().registercallback(callbackmanager, new facebookcallback<loginresult>() { @override public void onsuccess(loginresult loginresult) { log.d(logtag, "facebook login success"); share("kk"); } @override public void oncancel() { log.w(logtag, "facebook login canceled"); share("kk"); } @override public void onerror(facebookexception exception) { log.e(logtag, "facebook login error"); exception.printstacktrace(); } }); loginmanager.getinstance().loginwithpublishpermissions((activity) context, arrays.aslist("publish_actions")); } public void share(final string msg) { log.d(logtag, "facebook sharing new message"); set<string> permissions = accesstoken.getcurrentaccesstoken().getpermissions(); accesstoken accesstoken = accesstoken.getcurrentaccesstoken(); bundle postparams = new bundle(); postparams.putstring("name", "yourtitle"); postparams.putstring("caption", "yourcaption"); postparams.putstring("description", "yourdesc"); postparams.putstring("message", "yourmessage"); graphrequest request = new graphrequest(accesstoken, "me/feed", postparams, httpmethod.post, null); asyntaskgraphrequest asyntaskgraphrequest = new asyntaskgraphrequest(request); asyntaskgraphrequest.execute(); } the problem when app logs facebook shows message "this not let app post facebook" although using
loginmanager.getinstance().loginwithpublishpermissions((activity) context, arrays.aslist("publish_actions")); 
on other hand, how can check whether user still logged in fb call loginwithpublishpermissions once?
thank !
as said @ankush, necesary registered authorized developer @ app settings in developer facebook web.
my final code (now working fine) is:
public class fbmanager { private context context; private static final string logtag = "fbmanager"; private callbackmanager callbackmanager; public fbmanager(context context, callbackmanager callbackmanager){ this.context = context; this.callbackmanager = callbackmanager; } public static void tracekeyhash(activity activity){ try { packageinfo info = activity.getpackagemanager().getpackageinfo("com.muv.android", packagemanager.get_signatures); (signature signature : info.signatures) { messagedigest md = messagedigest.getinstance("sha"); md.update(signature.tobytearray()); log.i(logtag, "share - keyhash: " + base64.encodetostring(md.digest(), base64.default)); } } catch (exception e) { e.printstacktrace(); } } public void share(final string msg) { if (isloggedin()) { post(msg); } else{ loginmanager.getinstance().registercallback(callbackmanager, new facebookcallback<loginresult>() { @override public void onsuccess(loginresult loginresult) { log.d(logtag, "facebook login success"); post(msg); } @override public void oncancel() { log.w(logtag, "facebook login canceled"); } @override public void onerror(facebookexception exception) { log.e(logtag, "facebook login error"); exception.printstacktrace(); } }); loginmanager.getinstance().loginwithpublishpermissions((activity) context, arrays.aslist("publish_actions")); } } public boolean isloggedin() { accesstoken accesstoken = accesstoken.getcurrentaccesstoken(); return accesstoken != null; } private void post(final string msg){ log.d(logtag, "facebook posting new message"); set<string> permissions = accesstoken.getcurrentaccesstoken().getpermissions(); accesstoken accesstoken = accesstoken.getcurrentaccesstoken(); bundle postparams = new bundle(); postparams.putstring("message", msg); graphrequest request = new graphrequest(accesstoken, "me/feed", postparams, httpmethod.post, null); graphrequestasynctask asyntaskgraphrequest = new graphrequestasynctask (request); asyntaskgraphrequest.execute(); } }
Comments
Post a Comment