#include static inline void token_parse(char *tok, struct session *session) { json_tokener *tokener = json_tokener_new(); json_object *obj = json_tokener_parse_ex(tokener, tok, strlen(tok)); struct json_object_iterator iter = json_object_iter_begin(obj); struct json_object_iterator iter_end = json_object_iter_end(obj); while (!json_object_iter_equal(&iter, &iter_end)) { if (!strcmp(json_object_iter_peek_name(&iter), "access_token")) { const char *val = json_object_get_string( json_object_iter_peek_value(&iter)); session->token = malloc(strlen(val) + 1); strcpy(session->token, val); } else if (!strcmp(json_object_iter_peek_name(&iter), "scope")) { const char *val = json_object_get_string( json_object_iter_peek_value(&iter)); session->scope = malloc(strlen(val) + 1); strcpy(session->scope, val); } json_object_iter_next(&iter); } json_tokener_free(tokener); }