views:

33

answers:

1

I'm using AMFPHP, and wrote a small function in php to post in facebook whenever it's called:

function postear($pregunta,$winoption,$loseoption) {
    require_once("../../facebook.php");
    Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;

    $facebook = new Facebook(array(
        'appId'  => 'xxxxxxxxxxxxx',
        'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        'cookie' => false
    ));

    $session = $facebook->getSession();
    $token = $session['access_token'];

    //echo "Post successful !"; 
    $facebook->api( '/me/feed', 'POST', array ( 'message' => '','link' => 'http://www.facebook.com/apps/myapp','name' => 'dummy name'));
}

I'm getting this error:

message = "faultCode:AMFPHP_RUNTIME_ERROR faultString:'An active access token must be used to query information about the current user.'

I'm not very familiar to Facebook's graph api, and kinda of confussed because sometimes i can post correclty by calling my function, and other times gives me above's error. Maybe I need to somehow pass the token to my posting call ?. And what's the purpose of the 'cookie' argument in my call to log me into facebook ?.

Also, the access token is unique ?, or a different one is generated every time someone logs into the app ?.

Thanks for your orientation and thanks for any help.

+1  A: 

If you have not requested offline access for the application you created for the user you are trying to authenticate with, then you need to login to facebook before the application will work. It doesn't have anything to do with AMFPHP.

I don't know what kind of environment you are running but take a look at this tutorial. You should be able to glean what you need in order to get your application running.

    if (isset($_POST['tt'])){
        try {
            $statusUpdate = $facebook->api('/me/feed', 'post', array('message'=> $_POST['tt'], 'cb' => ''));
        } catch (FacebookApiException $e) {
            d($e);
        }

Note that $_POST['tt'] is a variable set by the form in the example code. You can use whatever you want in that for example.

$statusupdate = $facebook->api('/me/feed', 'post', array('message'=>$myMessage, 'cb'=>'');

Pay close attention to step 3. In that code sample they give some FBML tags that will take care of putting a login/logout button onto your page that will handle logging in the user. Then you don't have to maintain another tab in the browser with facebook logged in on it. Good luck!

controlfreak123
Actually, it's an small Flash app in facebook, which is inside a small PHP where the user logs in, and i'm using the function in AMFPHP only to posting. Maybe if I ask the user for some permissions whe he/she logs in... then the call for posting will works always. As You said it's not a problem with AMFPHP, or Flash for that matter, it's just Facebook related. I will read the tutorial and try later with your suggestion, thanks!.
José Joel.
oh one other thing i've noticed. Even if the user is logged into facebook in another tab you might have to click the login button again. This will pop up the appropriate window to grant the permissions for your application that you need. The facebook graph api docs are great for this. http://developers.facebook.com/docs/api
controlfreak123
The problem persists !. Maybe I need to somehow retrieve my access token when the user logs in and then pass it to my call for posting ?, something like $facebook->api( '/me/feed?token=XXXXX' ...or something ?
José Joel.
No you don't need to do that. The tutorial link i gave you has a section that is used to post to someones feed. I will update my answer with the snip...
controlfreak123
If you are still having issues I would suggest creating the tutorial and getting it to run on your local machine and then compare it to what you have. Thats how I started out with it. If you are still having issues and you want me to try out your code myself we can talk more. [email protected]
controlfreak123

related questions