Unable to get Publish Permission With Test User Facebook Android -
i want publish post user's wall. know facebook allows tester , developers post on wall. have added user tester list. when try publish permission, says user has granted permission (as shown in screenshot) , returns. not able permission or post on wall. moreover, callback's method not called well.
code
i have followed code facebook example rpssample.
//publish wall public void publishresult() { registerpublishpermissioncallback(); if (canpublish()) { //see definition below sharelinkcontent content = new sharelinkcontent.builder() .setcontenturl(uri.parse(urltopost)) .build(); shareapi.share(content, new facebookcallback<sharer.result>() { @override public void onsuccess(sharer.result result) { callback.didshareonfacebooksuccessfully(); } @override public void oncancel() { // should not happen } @override public void onerror(facebookexception error) { showtoast(error.getmessage()); } }); } } //check if user has permission or not private boolean canpublish() { final accesstoken accesstoken = accesstoken.getcurrentaccesstoken(); if (accesstoken != null) { if (accesstoken.getpermissions().contains(appconstants.additional_permissions)) { // if have publish permissions, go ahead , publish return true; } else { // otherwise ask user if they'd publish facebook new alertdialog.builder(activity) .settitle(r.string.share_with_friends_title) .setmessage(urltopost) .setpositivebutton(r.string.share_with_friends_yes, canpublishclicklistener) .setnegativebutton(r.string.share_with_friends_no, dontpublishclicklistener) .show(); return false; } } return false; } //if user allows, ask facebook grant publish_action permission private dialoginterface.onclicklistener canpublishclicklistener = new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialoginterface, int i) { if (accesstoken.getcurrentaccesstoken() != null) { // if choose publish, request publish permissions loginmanager.getinstance() .setdefaultaudience(defaultaudience.friends) .loginwithpublishpermissions(activity, arrays.aslist(appconstants.additional_permissions)); } } }; //callback - of method doesn't call. private void registerpublishpermissioncallback() { loginmanager.getinstance().registercallback( callbackmanager, new facebookcallback<loginresult>() { @override public void onsuccess(loginresult loginresult) { accesstoken accesstoken = accesstoken.getcurrentaccesstoken(); if (accesstoken.getpermissions().contains(appconstants.additional_permissions)) { publishresult(); } else { handleerror("not enough permissions publish"); } } @override public void oncancel() { } @override public void onerror(facebookexception exception) { handleerror(exception.getmessage()); } private void handleerror(string errormessage) { // means user did not grant write permissions, // don't implicit publishes showtoast(errormessage); } } ); }
my app live on console. please guide requirement of facebook publish permission test user? thanks.
use below code check if permission granted or not.
string url = "/" + "(userfbid)" + "/permissions"; new graphrequest(accesstoken.getcurrentaccesstoken(), url, null, httpmethod.get, new graphrequest.callback() { public void oncompleted(graphresponse response) { try { jsonobject json = new jsonobject( response.getrawresponse()); jsonarray data = json.getjsonarray("data"); boolean ispermitted = false; (int = 0; < data.length(); i++) { if (data.getjsonobject(i) .getstring("permission") .equals("publish_actions")) { ispermitted = true; string status = data.getjsonobject(i) .getstring("status"); if (status.equals("granted")) { publishresult() } else { loginfacebook(); } break; } } if (!ispermitted) { loginfacebook(); } } catch (exception e) { e.printstacktrace(); } } }).executeasync();
replace user's fb id on place of (userfbid).
if permission not granted use function ask user permission.
private void loginfacebook() { loginmanager = loginmanager.getinstance(); loginmanager.loginwithpublishpermissions(this, arrays.aslist("publish_actions")); loginmanager.registercallback(callbackmanager, new facebookcallback<loginresult>() { @override public void onsuccess(loginresult loginresult) { publishresult() } @override public void onerror(facebookexception error) { } @override public void oncancel() { } }); }
Comments
Post a Comment