Dunno si je manque quelque chose mais voilà. J'essaie d'obtenir un accès à mon application pour que cela puisse aller chercher des événements pour certains groupes publics sur Facebook, sans demander à un utilisateur d'être connecté. P>
im essayant d'obtenir un accès_token de https://graph.facebook.com/oauth/access_token ? client_secret = foobar & client_id = foobar & subvent_type = client_credentials & Format = JSON & SDK = iOS P>
Ceci renvoie une chaîne: Access_Token = XXXX | UGTQDOWFVVO5_S-FO2D7_I4RDBC P>
C'est gentil et tout, mais ce n'est pas JSON. Toutes les idées sur la raison pour laquelle la chaîne retournée n'est pas codée JSON? P>
note: Im en utilisant la fonction Facebook iOS SDK comme si tellement [Demande de FaceBookWithGraphpath: @ "OAuth / Access_Token" andparams: paramètres andhttpmethod: @ "Post" andélégate: auto]; p>
6 Réponses :
Tout aperçu de la raison pour laquelle le retour la chaîne n'est pas codée JSON? P> blockQuote>
Ouais, le jeton d'accès n'est pas censé être codé JSON. Et il y a sans doute peu de valeur dans JSON-Codant une seule chaîne de toute façon. P>Pourquoi vous attendez-vous que ce soit? Strike> P>
semble que j'étais mal informé à ce sujet. La spécification indique que l'application / JSON doit être utilisée pour le corps de réponse. P>
Vous dites donc que nous devons écrire nos propres analyseurs alors pour gérer la réponse?
Maintenant, je suis confus - vous n'avez pas besoin d'analyser le jeton d'accès pour rien que je connaisse. Qu'essayez-vous de sortir de l'analyse du jeton d'accès?
-1 C'est faux. Il est i> censé être codé JSON et que l'attente est basée sur la spécification: Outils.ietf.org/html/Draft-IETF-OAUTH-V2-25#Section-5.1
Merci, Peter. Semble étrange que fb est en violation d'une spécification qu'ils co-créding!
Si vous utilisez Facebook SDK, je crois qu'ils renvoient Nsarray et Nsdictionary P>
Je me tromperai peut-être, mais essayez avec un objetforkey: @ "Access_Token" code> p>
Suivi. P>
La manière dont je comprends la FB iOS SDK est que votre fonction déléguée recevra un objet tel que Nsarray ou Nsdimentaly pour travailler. En regardant dans les internes des classes SDK FB, il semble que toutes les réponses soient analysées à l'aide de l'analyseur SBJSON. Si la réponse n'est pas JSON que cela échouera. p>
[_ Demande de FacebookWithGraphpath: @ "261247595170" andelegate: auto]; retourne bien json. Pas de problèmes là-bas. p>
[_ Demande FacebookWithGraphpath: @ "OAuth / Access_Token" andparams: parames andhttpmethod: @ "Post" andélégate: auto]; Chaîne retournée. Sbjson Parser échoue. p>
Cela semble être une incohérence dans le service de graphique FB. p>
On pourrait écrire une fonction spéciale pour gérer ce problème, mais si FB décide de modifier le format de la chaîne, toute l'application iPhone cesserait de fonctionner et de mettre à jour. Pas cool. p>
Voici un extrait pour extraire votre jeton d'accès et remplacer le caractère du tuyau avec l'évasion appropriée ...
NSURL *accessTokenURL = [NSURL URLWithString:@"https://graph.facebook.com/oauth/access_token?client_id=XXXXXXXXXXXXX&client_secret=XXXXXXXXXXXXXXXXXXX&grant_type=client_credentials"]; NSString *accessTokenResponse = [NSString stringWithContentsOfURL:accessTokenURL encoding:NSUTF8StringEncoding error:NULL]; if(accessTokenResponse != nil) { NSMutableString *accessToken = [NSMutableString stringWithString:[accessTokenResponse substringFromIndex:13]]; [accessToken replaceOccurrencesOfString:@"|" withString:@"%7C" options:NSLiteralSearch range:NSMakeRange(0, [accessToken length])]; }
Ceci est un bug fort>: https://developers.facebook.com / bugs / 325262010847554 p>
La mise en œuvre OAuth 2.0 de Facebook est clairement en violation de la spécification: https://datatratraquer.ietf.org/doc/html/Draft-ietf-oauth-v2-25#ssection-5.1 P>
J'utilise le flux d'applications Web côté serveur et j'aurez le même problème que vous décrivez pour le SDK iOS. P>
Ceci est fixé à partir de V2.3 de l'API graphique. Spécifiez la version à l'aide de finParpoint https://graph.facebook.com/v2.4/oauth / Access_Token .
Il est facile de atterrir accidentellement sur la mauvaise version de l'API Facebook Docs. P>