2017-03-31 5 views
2

Aujourd'hui, la connexion à Facebook sur mon site Web a été interrompue. J'ai lancé le débogueur et trouvé que l'analyse du jeton d'accès échouait. Cela semble être dû au fait que Facebook a modifié le format de la réponse oauth. Auparavant, les paramètres CGI:Connexion Facebook interrompue, la réponse à la sérialisation d'Oauth est passée des paramètres CGI à JSON

access_token=EAAFO...cBUZD&token_type=bearer&expires_in=5183996 

Mais tout d'un coup, il semble être PROCHAINS JSON:

{"access_token":"EAAFO...cBUZD","token_type":"bearer","expires_in":5183996} 

Le correctif dans mon code semble assez simple. J'ai juste besoin de changer l'analyseur d'un analyseur CGI en un analyseur JSON et obtenir la même variable qui m'intéresse: access_token.

Ma question concerne le versionnement de cette page. Je n'aime pas quand mon site se brise.

Pourquoi Facebook a-t-il changé cela? Ce changement est-il documenté? Existe-t-il une sorte de versioning sur Oauth que je devrais utiliser pour éviter les ruptures comme celle-ci? Comment puis-je être informé des changements futurs à Oauth par Facebook?

Le Facebook API upgrade tool ne répertorie pas les modifications dont j'ai besoin dans mon application pour la dernière version de l'API. Dans tous les cas, aucun des URL que j'utilise pour OAuth semblent avoir un numéro de version embarquée dans les:

  • https://www.facebook.com/dialog/oauth
  • https://graph.facebook.com/oauth/access_token
+1

Il a été annoncé en https: //developers.facebook.com/docs/apps/changelog sous le titre "[Oauth Access Token] Format" il y a 2 ans. L'outil de mise à niveau affiche les éléments que Facebook doit savoir modifier. Il n'y a aucun moyen que Facebook puisse savoir si vous gérez seulement l'ancien format ou le nouveau et le vieux. – WizKid

+1

_ "En aucun cas, aucune des URL que j'utilise pour Oauth ne semble contenir de numéro de version" _ "- parce que vous n'en avez pas spécifié, de sorte qu'il retourne à la version API actuelle la plus basse application peut utiliser. https: //developers.facebook.com/docs/facebook-login/manual-build-a-login-flow affiche la version de l'API transmise explicitement pour ces deux points de terminaison. – CBroe

Répondre

1

Comme WizKid états, il a été annoncé dans Facebook Developers Changelog il y a deux ans sous le titre "[Oauth Access Token] Format". Facebook a un outil pour essayer de trouver des choses qui vont casser, à cause des changements de l'API, mais il n'a pas alerté celui-ci.

Vous pouvez mettre les numéros de version de l'API dans les URL Oauth pour Facebook. Avec les numéros de version, le flux de connexion Facebook est:

  1. redirigent l'utilisateur vers https://www.facebook.com/v2.9/dialog/oauth avec un tas de paramètres nécessaires tels que votre numéro de client, la liste des autorisations que vous demandez, et une URL de retour.
  2. Facebook permet à l'utilisateur de se connecter à, leur demande d'accepter les autorisations que vous avez demandé, et les redirige vers votre site avec un paramètre « code »
  3. côté serveur vous contacter https://graph.facebook.com/v2.9/oauth/access_token avec ce code (et quelques autres trucs) en tant que paramètres. Facebook répond avec un jeton
  4. côté serveur vous contacter https:///graph.facebook.com/v2.9/me avec ce jeton pour demander des informations sur l'utilisateur

C'est le processus qui est à peu près documenté ici: https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow