Javascript – An active access token must be used to query information about the current user with open graph

facebookfacebook-graph-apijavascript

Hello everyone I'm trying to post the activity of users of my facebook app, I follow the tutorial step by step but it doesn't work properly…

The alert message show me the error "Error occured An active access token must be used to query information about the current user" why?? I'm loged correctly.

The code is this:

<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US"
  xmlns:fb="https://www.facebook.com/2008/fbml"> 
<head prefix="og: http://ogp.me/ns# appnamespace: 
              http://ogp.me/ns/apps/appnamespace#">
 <title>OG Tutorial App</title>
   <meta property="fb:app_id" content="appID" /> 
   <meta property="og:type" content="appnamespace:recipe" /> 
   <meta property="og:title" content="Stuffed Cookies" /> 
   <meta property="og:image" content="http://www.domain.com/logo.gif" /> 
   <meta property="og:description" content="The Turducken of Cookies" /> 
   <meta property="og:url" content="http://www.domain.com/activity.php">

   <script type="text/javascript">
   function postCook()
   {
       FB.api(
         '/me/namespace:cook',
         'post',
         { recipe: 'http://www.domain.com/activity.php' },
         function(response) {
            if (!response || response.error) {
               alert('Error occured '+ response.error.message); // it shows "Error occured An active access token must be used to query information about the current user." message
            } else {
               alert('Cook was successful! Action ID: ' + response.id);
            }
         });
   }
   </script>
 </head>
 <body>
   <div id="fb-root"></div>
   <script>
     window.fbAsyncInit = function() {
       FB.init({
         appId      : 'appID', // App ID
         status     : true, // check login status
         cookie     : true, // enable cookies to allow the server to access the session
         xfbml      : true  // parse XFBML
       });
     };

     // Load the SDK Asynchronously
     (function(d){
       var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
       js = d.createElement('script'); js.id = id; js.async = true;
       js.src = "//connect.facebook.net/en_US/all.js";
       d.getElementsByTagName('head')[0].appendChild(js);
     }(document));
   </script>

   <h3>Stuffed Cookies</h3>
   <p>
     <img title="Stuffed Cookies" 
          src="http://www.domain.com/logo.gif" 
       />
   </p>

   <br>
   <form>
<input type="button" value="Cook" onclick="postCook()" />
  </form>
</body>
</html>

Best Answer

I don't see anywhere in your source where you authenticate the user. The user must authorize your application first, as described here: https://developers.facebook.com/docs/authentication/client-side/

Related Topic