private Session.NewPermissionsRequest buildPermissionsRequest(
      JSONArray args, final CallbackContext callbackContext) throws JSONException {
    final List<String> permissions = asStringList(args.getJSONArray(0));

    Session.NewPermissionsRequest permissionsRequest =
        new Session.NewPermissionsRequest(cordova.getActivity(), permissions);

    permissionsRequest.setCallback(
        new StatusCallback() {
          @Override
          public void call(Session session, SessionState state, Exception exception) {
            try {
              session.removeCallback(this);

              if (missingPermission(permissions)) {
                callbackContext.success("not_authorized");
              } else {
                callbackContext.success("authorized");
              }
            } catch (Exception e) {
              Log.e(TAG, "Error executing action", e);
              callbackContext.error(e.toString());
            }
          }
        });

    return permissionsRequest;
  }
 private static Session.NewPermissionsRequest getNewPermissionsRequest(
     Session session, StatusCallback callback, List<String> permissions, Activity activity) {
   Session.NewPermissionsRequest req = new Session.NewPermissionsRequest(activity, permissions);
   req.setCallback(callback);
   // This should really be "req.setCallback(callback);"
   // Unfortunately the current underlying SDK won't add the callback when you do it that way
   // TODO: when upgrading to the latest see if this can be "req.setCallback(callback);"
   // if it still doesn't have it, file a bug!
   session.addCallback(callback);
   req.setDefaultAudience(SessionDefaultAudience.FRIENDS);
   return req;
 }