Don't use direct call. First thing: you're using deprecated action registration parameters - update your call. I assume you're writing to Elgg 1.8 or later.
You're additng action tokens in completely wrong way! They're necessary to prevent XSRF attacks, so need to pe added at URL generation. To elgg_register_action, you need to pass action file PATH, not URL. Use elgg_add_action_tokens_to_url
and read through http://docs.elgg.org/wiki/Actions#Security
You should get specific error telling you that, but you didn't mention it.