EDIT: ho capito il problema. Il # in #user_sex non viene convertito in% 23 da richieste python. C'è un modo per forzare le richieste Python per convertire # in% 23 o devo semplicemente codificare quella parte?Python richiede che urlencode non funzioni?
Sto provando a creare una follia di facebook fql. Quando uso il fql_url sotto
fql_url = (
'https://graph.facebook.com/fql?q='
'{"user_sex":"SELECT sex FROM user WHERE uid=me()",'
'"friends":"SELECT uid, name FROM user WHERE uid IN '
'(SELECT uid2 FROM friend WHERE uid1 = me()) '
'AND not (sex in (SELECT sex FROM #user_sex)) '
' ORDER BY name"}'
'&access_token='+access_token
)
e corro requests.get (fql_url), il JSON restituito è
{u'error': {
u'code': 601,
u'message': u"(#601) Parser error: unexpected '{' at position 0.",
u'type': u'OAuthException'}
}
Tuttavia quando ho la mano il codice fql_url come questo
fql_url = (
'https://graph.facebook.com/fql?q=%7B%22'
'user_sex%22:%22SELECT%20sex%20FROM%20user%20WHERE%20uid=me()%22,%22'
'friends%22:%22SELECT%20uid,%20name%20FROM%20user%20WHERE%20uid%20IN%20'
'(SELECT%20uid2%20FROM%20friend%20WHERE%20uid1%20=%20me())%20'
'AND%20not%20(sex%20in%20(select%20sex%20from%20%23user_sex))%20%20'
'ORDER%20BY%20name%22%7D&'
'access_token='+access_token
)
tutto funziona (il json ha i dati desiderati).
Ho confrontato sia il primo fql_url che il codice fql_url codificato a mano ed entrambi dovrebbero generare lo stesso url utilizzato per ottenere il json. L'urlencode delle richieste non funziona o sto facendo qualcosa di sbagliato qui?
Questo ha senso. Quindi in pratica dovrei usare il primo fql_url e sostituire semplicemente # con% 23 o c'è un modo più convenzionale di farlo? – bab
Ho aggiunto il modo pragmatico di rispondermi –