0

I have implemented the login authentication in my app, i know how to share, but im getting crazy about the like, because im never getting a positive response. So...how can i like a post from my android app with facebook sdk, by requesting publish permissions?

tshepang
  • 12,111
  • 21
  • 91
  • 136
WitaloBenicio
  • 3,395
  • 5
  • 25
  • 32

1 Answers1

1

Its work for me.

private static final List<String> PERMISSIONS = Arrays.asList("publish_actions", "publish_stream");

public void likeThis() {
Session session = Session.getActiveSession();       

if (session != null && session.isOpened()) {
    List<String> permissions = session.getPermissions();
    if (!isSubsetOf(PERMISSIONS, permissions)) {
        pendingPublishReauthorization = true;
        Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(this, PERMISSIONS);

        if (setPermissions(session, newPermissionsRequest))
            return;
    }

    Request.Callback callback = new Request.Callback() {
        public void onCompleted(Response response) {

            if (response != null) {
                FacebookRequestError error = response.getError();

                if (error != null) {
                    //                      error
                } else {
                    //                      success
                }
            } else {
                MessageToast toast =  MessageToast.getInstance(mContext);
                toast.show("Tente novamente mais tarde", MessageToast.ALERT);
            }
        }
    };

    Request request = new Request(session, "1442581505974136/likes", null, HttpMethod.POST, callback);

    RequestAsyncTask task = new RequestAsyncTask(request);
    task.execute();
}else{
//      not logged
}

}

private boolean isSubsetOf(Collection<String> subset, Collection<String> superset) {
    for (String string : subset) {
        if (!superset.contains(string)) {
            return false;
        }
    }
    return true;
}

private boolean setPermissions(final Session session, final NewPermissionsRequest newPermissionsRequest) {

    try {
        Log.i(TAG, "Getting a new permission...");
        session.requestNewPublishPermissions(newPermissionsRequest);

        return true;
    } catch (IllegalStateException e) {
        Log.e("setPermissions","[IllegalStateException] \n" + e.getMessage());


        pendingPublishReauthorization = false;

        return false;
    } catch (UnsupportedOperationException e) {
        Log.e("setPermissions","[UnsupportedOperationException] \n" + e.getMessage());


        pendingPublishReauthorization = false;

        return false;
    }
}

But sometime, I can't like some fb_id. I don't know why, yet..

Fabricioraphael
  • 195
  • 1
  • 9