80 votes

Facebook OAuth : paramètres de callback_uri personnalisés

J'aimerais avoir une URL de redirection dynamique pour mon intégration Facebook OAuth2. Par exemple, si mon URL de redirection est la suivante dans mon application Facebook :

http://www.mysite.com/oauth\_callback?foo=bar

J'aimerais que l'URL de redirection pour une demande spécifique soit quelque chose comme ceci, de sorte que sur le serveur, j'ai un certain contexte sur la façon de traiter le code d'authentification :

http://www.mysite.com/oauth\_callback?foo=bar&user=6234

Ma redirection est invoquée après l'envoi de la boîte de dialogue d'autorisation et je reçois un code d'autorisation, mais lorsque j'essaie d'obtenir mon jeton d'accès, je reçois une erreur OAuthException de la part de Facebook. Ma requête ressemble à ceci (les retours à la ligne ont été ajoutés pour plus de clarté) :

https://graph.facebook.com/oauth/access\_token
    ?client\_id=MY\_CLIENT\_ID
    &redirect\_uri=http%3A%2F%2Fwww.mysite.com%2Foauth\_callback%3Ffoo%3Dbar%26user%3D6234
    &client\_secret=MY\_SECRET
    &code=RECEIVED\_CODE

Tous mes paramètres sont codés en URL, et le code semble valide, donc ma seule hypothèse est que le paramètre problématique est mon redirect_uri. J'ai essayé de définir redirect_uri à tout ce qui suit, en vain :

  1. L'URL réelle de la requête vers mon site
  2. L'URL de la requête vers mon site, moins le nom de l'utilisateur. code paramètre
  3. L'URL spécifiée dans la configuration de mon application Facebook

Les paramètres URI de redirection personnalisés sont-ils pris en charge ? Si oui, est-ce que je les spécifie correctement ? Si ce n'est pas le cas, serai-je obligé de définir un cookie, ou existe-t-il un meilleur modèle pour fournir un contexte à mon site Web ?

-1voto

Daniel Masih Points 189

Si vous utilisez la version officielle de facebook php skd, vous pouvez définir des paramètres personnalisés. state comme ceci

$helper = $fb->getRedirectLoginHelper();
$helper->getPersistentDataHandler()->set('state',"any_data");
$url = $helper->getLoginUrl($callback_url, $fb_permissions_array);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X