2012-08-28 3 views
2

Je suis en train d'échanger un jeton d'accès utilisateur de courte durée pour une ling durée, mais obtenir une erreur (en all.js):jeton d'accès de courte durée d'échange pour une longue durée, ne fonctionne pas

ReferenceError: cession invalide côté gauche

... TZCOZCkuZBxZAzVUSokiOJbXZAHhESJvuA97qXTpVbVj3P7AZDZD & expires = 512326

response.error.message: erreur inconnue

code:

window.fbAsyncInit = function() { 
      FB.init({ 
       appId: 'xxx', // App ID 
       status: true, // check login status 
       cookie: true, // enable cookies to allow the server to access the session 
       xfbml: true, // parse XFBML 
       oauth: true 
      }); 

      FB.login(function (response) { 
        if (response) { 

        var accessToken = response.authResponse.accessToken; 

        FB.getLoginStatus(function(response) { 
         if (response.status === 'connected') { 

          var accessToken = response.authResponse.accessToken; 

          var OauthParams = {}; 
          OauthParams['client_id'] = 'xxx'; 
          OauthParams['client_secret'] = 'xxx'; 
          OauthParams['grant_type'] = 'fb_exchange_token'; 
          OauthParams['fb_exchange_token'] = accessToken; 
          OauthParams['response_type'] = 'token'; 
          console.log(accessToken); 

          FB.api('/oauth/access_token', 'post', OauthParams, function(response) { 
           if (!response || response.error) { 
            console.log(response.error.message); 
           } 
           else { 
            console.log(response.accesstoken); 
           } 
          });   
         } 
        }); 
        }; 

      }, { scope: 'manage_pages' }); 

     }; 


} 

(function(d){ 
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    ref.parentNode.insertBefore(js, ref); 
}(document)); 

Quelqu'un a une idée?

Merci, /M

Répondre

1

selon le scénario 4 du documentation vous devez envoyer une GET demande à

https://graph.facebook.com/oauth/access_token? 
    client_id=APP_ID& 
    client_secret=APP_SECRET& 
    grant_type=fb_exchange_token& 
    fb_exchange_token=EXISTING_ACCESS_TOKEN 

peut-être le problème est que vous utilisez POST demande, mais je ne suis pas sûr

PS Je ne recommanderais pas d'utiliser APP_SECRET du côté client

+0

La requête GET n'a pas modifié le message d'erreur FB et l'erreur Firebug. Ce code client est juste à des fins de test, bien sûr, je ne révélerai pas le Secret APP plus tard. –

+1

Cela signifie que vous ne le ferez plus _client-side_ plus tard - alors pourquoi "testez-vous" quelque chose qui ne sera jamais utilisé? – CBroe

0

J'ai rencontré un problème similaire en exécutant des tests à partir d'un client FB Javascript SDK. Le problème de ma part était que SDK trébucherait en manipulant le access_token dans fb_exchange_token. Changer juste les trois derniers caractères dans cette chaîne de jeton d'accès a fait disparaître l'erreur. Bien sûr, cela n'aide pas à résoudre le problème, mais au moins c'est là que le problème était dans mon cas.

Étant donné que ces appels doivent de toute façon être effectués à partir d'un serveur, je ne vais pas procéder à un dépannage supplémentaire.