J'ai donc passé beaucoup de temps à ce sujet, et il me semble que cela devrait être une solution simple. J'essaie d'utiliser l'authentification de Facebook pour enregistrer des utilisateurs sur mon site, et j'essaie de le faire côté serveur. J'ai atteint le point où je reçois mon jeton d'accès, et quand je vais à:
https://graph.facebook.com/me?access_token=MY_ACCESS_TOKEN
Je reçois l'information que je cherche sous forme de chaîne qui ressemble à ceci:
{"id":"123456789","name":"John Doe","first_name":"John","last_name":"Doe","link":"http:\/\/www.facebook.com\/jdoe","gender":"male","email":"jdoe\u0040gmail.com","timezone":-7,"locale":"en_US","verified":true,"updated_time":"2011-01-12T02:43:35+0000"}
Il semble que je devrais juste être capable d'utiliser dict(string)
sur ceci mais je reçois cette erreur:
ValueError: dictionary update sequence element #0 has length 1; 2 is required
J'ai donc essayé d'utiliser Pickle, mais j'ai eu cette erreur:
KeyError: '{'
J'ai essayé d'utiliser Django.serializers
Pour le désérialiser, mais j'ai obtenu des résultats similaires. Des pensées? Je pense que la réponse doit être simple et que je suis juste stupide. Merci pour toute aide!
Ces données sont [~ # ~] json [~ # ~] ! Vous pouvez le désérialiser en utilisant le module intégré json
si Python 2.6 +, sinon vous pouvez utiliser l'excellent tiers simplejson
module .
import json # or `import simplejson as json` if on Python < 2.6
json_string = u'{ "id":"123456789", ... }'
obj = json.loads(json_string) # obj now contains a dict of the data
Utilisez ast.literal_eval pour évaluer les littéraux Python. Toutefois, vous disposez de JSON (notez "true" par exemple), utilisez donc un désérialiseur JSON.
>>> import json
>>> s = """{"id":"123456789","name":"John Doe","first_name":"John","last_name":"Doe","link":"http:\/\/www.facebook.com\/jdoe","gender":"male","email":"jdoe\u0040gmail.com","timezone":-7,"locale":"en_US","verified":true,"updated_time":"2011-01-12T02:43:35+0000"}"""
>>> json.loads(s)
{u'first_name': u'John', u'last_name': u'Doe', u'verified': True, u'name': u'John Doe', u'locale': u'en_US', u'gender': u'male', u'email': u'[email protected]', u'link': u'http://www.facebook.com/jdoe', u'timezone': -7, u'updated_time': u'2011-01-12T02:43:35+0000', u'id': u'123456789'}