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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
vlXgu64BQGFSQrY0ZcJBZASMvYvTHu9GQ0YM9rjPSso.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsIjAiOiJwYXlsb2FkIn0
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.

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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
Ce qui m'affiche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
{"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
Donc déjà, on dirait qu'il manque une accolade a la fin.

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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
stringRequest = stringRequest + "}";
mais rien a faire, toujours la même erreur, seulement un caractère plus loin.

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


Edit : il ne manquais pas qu'une accolade, mais aussi une double quote...