Facebook access_token invalide?
Je suis d'essayer d'utiliser la nouvelle API Graphique Facebook a récemment publié, mais je n'arrive pas à le faire fonctionner correctement.
Je suis passé par les étapes, et après l' /autoriser un appel, je reçois un access_token:
access_token=109002049121898|nhKwSTJVPbUZ5JYyIH3opCBQMf8.
Lorsque je tente d'utiliser ce jeton-je obtenir:
{
"error": {
"type": "QueryParseException",
"message": "An active access token must be used to query information about the current user."
}
}
Je suis perplexe, comme trop pourquoi...
-AC
source d'informationauteur Alex Cook
Vous devez vous connecter pour publier un commentaire.
même chose ici. J'ai suivi Ben Biddington de blog pour obtenir le jeton d'accès. Même message d'erreur lorsque vous essayez d'utiliser. Facebook est OAuth mise en œuvre ne suit pas les spec complètement, je suis bien avec elle aussi longtemps que la doc est claire, ce qui n'est évidemment pas le cas ici. Aussi, il serait bien si le nom d'utilisateur et nom d'utilisateur sont retournés avec le jeton d'accès.
Lors de l'utilisation de votre Facebook Application du jeton
Si vous êtes à l'aide de la
me
alias comme danshttps://graph.facebook.com/me/
mais votre jeton est acquis pour un Facebook Applicationpuis "moi" n'est pas plus de vous - c'est l'application ou peut-être rien. De toute façon, ce n'est pas votre intention pour l'application d'interagir avec lui-même.Dans ce cas, vous souhaitez interagir avec votre compte d'utilisateur personnel à partir d'une application. Ce que vous devez faire (après avoir fait de l'application les autorisations de demandes dans l'INTERFACE utilisateur quand il vous le demande) est de trouver votre facebook id utilisateur # et le mettre à la place de "moi" pour accéder à votre propre information. par exemple, Mark Zuckerberg de facebook userid est 4, donc il est
https://graph.facebook.com/4/
L'alias
me
ne fonctionne que si vous êtes vous! Il est parfois difficile de se rappeler qui l'utilisateur actuel est lors de la programmation de facebook (c'est à dire vous, la Page de l'Application, etc) parce que nous sommes habitués à utiliser le facebook de l'INTERFACE utilisateur comme nous-mêmes la plupart du temps. Du point de vue programmation, il dépend de ce que l'acquis jeton représente.Un excellent post de blog qui aide toujours à me corriger est Ben Biddington | Facebook API Graphique — mise en jetons d'accès.
Juste pour clarifier -- après l'appel de
vous devriez recevoir un CODE qui, en conjonction avec votre CLIENT_ID et CLIENT_SECRET (en supposant que vous avez enregistré votre demande) peuvent être échangés pour un access_token à
Si c'est effectivement la façon dont vous êtes arrivé à votre ACCESS_TOKEN, vous devriez alors être en mesure de demander
Adjonction de ce type de paramètre renvoie le auth_token pour le niveau de l'application, de sorte qu'il est préférable de le supprimer. Ce qui a fonctionné pour moi, après de nombreuses tentatives et de combinaisons, est d'utiliser le même
redirect_url
paramètre dans l'appel à/oath/access_token
que dans le cas de l'appel à/oath/authorize
.De sorte que la séquence complète d'autoriser votre application sur un nom est:
1. appel ou rediriger vers:
2. dans la page située à l'
return_url
ci-dessus, une demande ou quoi d'autre à cette url:J'ai eu le même problème avec IE8.
La solution pour moi a été l'envoi de l'access_token dans la demande d'API.
Quelque chose comme ceci:
J'ai obtenu mon jeton par le biais de PHP comme ceci:
J'ai eu exactement le même problème. Un couple de choses que j'ai fait pour le résoudre:
Je tiens à souligner ce qui a été dit sur Ben Biddington du blog, et ce que j'ai remarqué en regardant le "mal formé" access_token dans la question initiale. D'autres ont dit des choses semblables dans ce fil, mais je veux être explicite.
Le jeton n'est pas fait mal formé, mais plutôt un jeton qui vous permet de faire des actions au nom de l'APPLICATION, et non l'utilisateur. C'est le jeton que vous souhaitez utiliser si vous vouliez obtenir tous les utilisateurs de l'application, ou d'afficher des aperçus pour votre application, etc, avec la demande généralement à venir à partir de votre serveur, pas le client. Ce type de jeton est obtenu en utilisant le type=client_cred paramètre. Si vous voulez faire des choses au nom de l'utilisateur, ne spécifiez pas le type=client_cred, et assurez-vous de spécifier les paramètres suivants dans votre appel à http://graph.facebook.com/oauth/access_token:
J'ai écrit ce que les paires clé-valeur d'un tableau PHP, mais je pense que vous obtenez le point. Le code OBTENIR la valeur est acquise après l'appel initial à http://graph.facebook.com/oauth/authorize avec les paramètres suivants:
J'espère que cela aide! Ce que l'Facebook docs disent, mais ne dis pas bien, est que l'obtention d'une access_token est un deux-processus de demande.
J'ai effectivement remarqué que si votre retour uri ne dispose pas d'une barre oblique à la fin vous avez des questions. Je suis en train de tester dans le navigateur et return_uri=https://mondomaine.com ne fonctionne pas, mais return_uri=https://mondomaine.com/fonctionne. Si j'utilise la première j'ai "Erreur de validation de code de vérification."
Cela semble un peu bizarre, mais j'ai pro juste oublié un mot dans la spec/instructions de certains où les. A fait perdre deux heures de ma vie à ce que.
J'ai eu le même problème, mais de se débarrasser de
type=client_cred
et assurez-vous que le paramètre redirect_uri est le même lors de la prise de l'autoriser et de laaccess_token call
résolu le problème.