11
votes

Comment puis-je obtenir un jeton d'accès de page qui n'expire pas?

J'aimerais savoir s'il est possible d'avoir un jeton d'accès qui n'expire jamais pour la publication à ma page

Maintenant, je reçois le jeton d'accès avec: xxx

J'ai Publish_stream et manage_pages autorisation, mais à l'aide de Accéder à la jeton du débogueur Je vois que le jeton expire dans environ une heure. Y a-t-il un moyen de ne jamais expire?


0 commentaires

5 Réponses :


17
votes

voir Facebook Developers :

En utilisant un jeton d'accès aux utilisateurs de longue durée, interrogeant le [utilisateur ID] / Comptes EndPoint fournira maintenant des jetons d'accès de page qui ne font pas expire pour les pages qu'un utilisateur gère.

Donc, vous devez échanger votre jeton initial short purifie pour un jeton longs avec un appel de serveur: xxx

puis vous interrogeez sur ce jeton longs. Fonctionne définitivement pour nous, c'est-à-dire les émissions de débogueur: "Expire: jamais"


edit - notre processus

Alors, ce que nous faisons est:

  • premier authentification côté client avec notre application où nous obtenons Un "code" de retour après que l'utilisateur accepte les autorisations demandées et connecte son compte avec notre application

    https://www.facebook.com/dialog/oauth ? client_id = your_app_id & redirect_uri = your_redirect_uri & Scope = commun_separated_list_of_permission_names & réponse_type = code

  • maintenant dans notre application Server Nous utilisons authentification latérale du serveur Pour échanger du code pour le jeton d'accès:

    https://graph.facebook.com/oauth/access_token ? client_id = your_app_id & redirect_uri = your_redirect_uri & client_secret = your_app_secret & code = code_generated_by_facebook

  • avec cet accès_Tokok Nous faisons l'échange latéral du serveur comme décrit ci-dessus

  • Maintenant, nous vous demandons des comptes / comptes et de l'accès_Token résultant est toujours valide

    espère que cela aide


12 commentaires

Merci Pete, mais quand je fais cet appel, j'ai cette réponse d'erreur {"Erreur": {"Message": "Une erreur inconnue s'est produite.", "Type": "OauthException", "Code": 1}}


Existant_access_Token est le jeton d'application ou le jeton de page? Je manque peut-être quelque chose :(


@Pete: Êtes-vous sûr que le débogueur affiche expire: jamais car pour moi, il affiche expire: 1354445684 (dans environ 2 mois)


@MARCOCALTAGIRONE: Je ne suis pas un expert mais je pense que existant_access_Token est le jeton Page / utilisateur Accès.


Mais si j'utilise le jeton d'accès de page comme existant_access_token, j'ai cette erreur {"Erreur": {"Message": "Une erreur inconnue s'est produite.", "Type": "OauthException", "Code": 1}}


Je suis désolé, je suis absent .. Je modifierai ma réponse avec le processus d'authentification que nous utilisons .. Mais pour nous existants_access_Token est un jeton d'accès utilisateur que vous devez demander des comptes. Théoriquement, vous devriez pouvoir également utiliser un jeton d'accès de page pour l'échange.


@Pete: Je suis un peu confus car après avoir suivi la procédure ci-dessus, j'ai toujours reçu un jeton qui expire dans deux mois et Facebook Docs indique également que, selon la nouvelle stratégie, on peut étendre le jeton sur maximum 60 jours. < / Code> Alors, comment pouvez-vous l'obtenir à n'expire jamais . Désolé d'être noobish mais je suis nouveau à Facebook API.


Hein, c'est étrange. Comme je l'ai dit dans mon poste, cela devrait explicitement fonctionner comme indiqué par les documents Facebook. Je pense que les jetons d'accès de page sont l'exception ici. Tous les autres jetons finiront par expirer, mais demandant / comptes avec un jeton de longue durée devraient donner un jeton de jeton d'accès "iMortal" pour toutes les pages du compte;). Je ne sais pas pourquoi ça ne marche pas pour toi ..


Ça marche vraiment! Merci beaucoup :) Voir la photo de débogger ici .


Sa documenté maintenant. développeurs.facebook.com/roadmap/offline-access-removal/...


URL est maintenant: développeurs.facebook.com/docs/roadmap / Changements terminés / ... Cela semble fonctionner pour moi aussi. Je vois "Expire: Jamais" quand je débobile le jeton ici: développeurs.facebook.com/tools/ Débogou / AccessToken


Il existe une manière beaucoup plus simple maintenant expliquée dans la seconde moitié de cet article: RocketMarketinginc.com/blog/...



1
votes

OK, il a fallu environ une semaine de recherche, mais voici ma solution. dans le https://developers.facebook.com/tools/explorer/ Assurez-vous que vous avoir gérer_page dans votre partie de votre accès_Token. Après cela, utilisez ce code avec votre identifiant d'application, votre secret et redirigez: xxx

Après cela copier le "nouveau jeton d'accès" et revenir à https://developers.facebook.com/tools/explorer/ Lorsque vous y arrivez dans votre nouveau jeton d'accès dans le champ de jeton d'accès. Puis cliquez sur Soumettre. Après cela dans le nœud, vous verrez A + _ ___ cliquez sur cette page et faites défiler vers les comptes et cliquez dessus. Trouvez la page que vous avez besoin du jeton d'accès pour et de copier et de la coller dans le champ Clé d'accès. Cliquez sur Déboguer et vous verrez que cela n'expirera jamais. Enregistrez ce jeton, il restera valide tant que vous ne réinitialisez pas vos applications Secret.


0 commentaires

4
votes

J'ai simplifié la réponse de Pete un peu et ajouté l'étape pour obtenir un jeton d'accès à la page non expirant:

  1. Accédez à l'URL suivante et notez le jeton d'accès renvoyé dans la barre d'adresse du navigateur:

    https://www.facebook.com/ dialogue / OAuth? client_id = APP_ID & redirect_uri = REDIRECT_URI & scope = manage_pages, publish_stream & response_type = jeton

  2. Accédez à l'URL suivante et dans les données renvoyées, trouvez le nom de la page souhaité et notez le jeton d'accès:

    https://graph.facebook.com/me/accounts?access_token=access_token_returned_from_step_1 < / a>

  3. Accédez à l'URL suivante et notez le jeton d'accès renvoyé:

    https://graph.facebook.com/oauth/ Access_Token? Client_id = App_id & Client_secret = App_Secret & Grant_type = fb_exchange_Token & fb_exchange_token = pages_access_token_from_step_2

  4. jeton d'accès Debugger pour vous assurer que votre profil de jeton d'accès ID correspond au choix ID de la page et il n'expire jamais


1 commentaires

Peu importe ce que l'URI de redirection est? Et si nous faisons quelque chose qui est serveur à serveur et n'implique pas de navigateur ou d'une application Web? Je peux supporter quelque chose si je dois, mais je préférerais pas.



0
votes

Vous pouvez utiliser l'API suivant de Facebook pour rafraîchir la vie de jeton à 60 jours et juste lorsque le jeton est sur le point d'expirer, appelez la même API à nouveau avec 60 jours pour rafraîchir sa vie à 60 jours à partir de ce moment-là. Token expire est présent dans le paramètre Expire et sa valeur est en secondes

remplace client_id et client_secret avec leur valeur réelle

https://graph.facebook.com/oauth/access_token?client_id= & Client_secret = & Grant_Type = fb_exchange_Token & fb_exchange_token =

dans Access_Token, placez la valeur de jeton réelle sans ajouter "Access_Token ="


0 commentaires