Bonjour,
J'essaie actuellement de développer une application pour Facebook, et je fais face a quelques difficultés. Mon application devait acceder aux informations publiques de diverses personnes, elle a besoin de s'identifier (lien), et le problème arrive avec le paramètre signed_request fourni à l'appli par Fb.
Ce paramettre se présente comme ça :
Il s'agit d'une concaténation de 2 informations. A gauche, une signature HMAC SHA-256, pour sécuriser le lien entre facebook et l'appli, et à droite, un objet JSON (qui contient entre autre, la clef pour decoder la partie gauche, et une clef d'autorisation pour l'application). Cette partie est elle encodée en Base64.Code:vlXgu64BQGFSQrY0ZcJBZASMvYvTHu9GQ0YM9rjPSso.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsIjAiOiJwYXlsb2FkIn0
Le probleme est que je n'arrive pas a récperer cet objet JSON, même si le decodage Base64 a l'air de fonctionner.
Voici un extrait de mon code :
Ce qui m'afficheCode:
1
2
3
4
5
6
7
8
9
10
11
12
13 out = response.getWriter(); ServletConfig conf = getServletConfig(); this.apiKey = conf.getInitParameter("API_KEY"); this.secretKey = conf.getInitParameter("SECRET_KEY"); String signed_request = request.getParameter("signed_request"); String part1 = (signed_request.split("\\."))[0]; String part2 = (signed_request.split("\\."))[1]; String stringRequest = new String (Base64.decode(part2), "Cp1252"); out.println(stringRequest); //JsonObject jsonRequest = new JsonObject(stringRequest);
Donc déjà, on dirait qu'il manque une accolade a la fin.Code:{"algorithm":"HMAC-SHA256","expires":1308150000,"issued_at":1308146139,"oauth_token":"103376143089251|2.AQAknJF6xF_7IOMv.3600.1308150000.1-1389078033|dOyaV0ewOLNHwKjyq2v-Nf-ghs8","user":{"country":"fr","locale":"fr_FR","age":{"min":21}},"user_id":"1389078033
Et si je décommente la ligne 13, j'ai le droit a une belle erreur serveur 500:
JsonException: Unterminated string at character 259 (le dernier caractere)
J'ai essayé de rajouter manuellement une accolade :mais rien a faire, toujours la même erreur, seulement un caractère plus loin.Code:stringRequest = stringRequest + "}";
Pour decoder le base64, j'utilise ceci : http://iharder.sourceforge.net/current/java/base64/
Si quelqu'un a la moindre idée, il est le bienvenu
Merci d'avance :ccool:
Edit : il ne manquais pas qu'une accolade, mais aussi une double quote...