j'arrive à me connecter sur facebook, mais quant j'essais de charger la frame contenant le jeu, ...
le code de la frame :
<div id="app_content_32498758354" class="app_content_32498758354"><div><iframe id="app32498758354_iframe_canvas" name="iframe_canvas" src="http://www.suceursdesang.com/jeu/?fb_sig_in_iframe=1&fb_sig_locale=fr_FR&fb_sig_in_new_facebook=1&fb_sig_time=1234395769.6542&fb_sig_added=1&fb_sig_profile_update_time=1233920924&fb_sig_expires=1234400400&fb_sig_user=722118737&fb_sig_session_key=2.nSVEzmPyFtS6uuzFYrMZVA__.3600.1234400400-722118737&fb_sig_ss=_Px9ke08WX7i5bt_8hyV7g__&fb_sig_api_key=ea1bc04157ea248952b528780fd38c02&fb_sig_app_id=32498758354&fb_sig=f3b7a54bb169db4c3c7ffea9a7d70c27" resizable="true" frameborder="0" fbcontext="777e1961d1c5" class="canvas_iframe_util"></iframe><script type="text/javascript"> FB_RequireFeatures(["CanvasUtil"], function() {FB.XdComm.Server.init("/xd_receiver_v0.4.php");FB.IFrameUtil.CanvasUtilServer.run();});</script></div></div>j'ai mis volontairement le code js qui est à coté car j'immagine bien qu'il à un rapport avec mon probleme.
j'ai transformé les . et ; de l'url en char html mais sans succes, quoi que je fasse, le contenu de la frame me renvois sur la page de login.
return 0; }
voila mon code : struct MemoryStruct { char *memory; size_t size; };
size_t WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data)
{ size_t realsize = size * nmemb;
struct MemoryStruct *mem = (struct MemoryStruct *)data;
mem->memory = (char *)realloc(mem->memory, mem->size + realsize + 1);
if (mem->memory) {
memcpy(&(mem->memory[mem->size]), ptr, realsize);
mem->size += realsize;
mem->memory[mem->size] = 0;
}
return realsize;
}
CURL *curl_handle = 0;
struct MemoryStruct *curl_chunk = 0;
void curlStart(void)
{ curl_global_init(CURL_GLOBAL_ALL);
curl_handle = curl_easy_init();
curl_chunk = (struct MemoryStruct *)malloc(sizeof(struct MemoryStruct));
curl_easy_setopt(curl_handle, CURLOPT_HEADER, 1);
curl_easy_setopt(curl_handle, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 0);
curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYHOST, 0);
curl_easy_setopt(curl_handle, CURLOPT_COOKIEJAR, "my_cookies.txt");
curl_easy_setopt(curl_handle, CURLOPT_COOKIEFILE, "my_cookies.txt");
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
}
void curlEnd(void)
{ curl_easy_cleanup(curl_handle);
curl_global_cleanup();
if(curl_chunk) free(curl_chunk);
}
const char* curlDownload(char*path,char*post)
{ if(!curl_chunk || !curl_handle) return "error";
if(curl_chunk->memory) free(curl_chunk->memory);
curl_chunk->memory = 0;
curl_chunk->size = 0;
if(post) curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDS,post);
curl_easy_setopt(curl_handle, CURLOPT_POST, (post!=0));
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void*)curl_chunk);
curl_easy_setopt(curl_handle, CURLOPT_URL, path);
CURLcode returnValue = curl_easy_perform(curl_handle);
if(returnValue) return curl_easy_strerror(returnValue);
return 0;
}
int facebooklogin(char *login, char *pass)
{
const char * path = "https://login.facebook.com/login.php?next=http://suceurdesang.com/jeu/";
const char* returnValue;
log_file log("curl.log.html");
console shell;
char postOption[1024]; sprintf(postOption,"email=%s&pass=%s&login=Login",login,pass);
curlStart();
char url[1024];
char murl[1024];
char*mptr=murl;
char*uptr=url;
log_file zlog("curl.zlog.txt");
int loged = 0;
returnValue = curlDownload((char*)path,postOption);
if(returnValue) shell.printc(ROUGE,"%s\n",returnValue);
else {
if(strstr(curl_chunk->memory,"connexion"))
{ shell.printc(VERT,"connected to facebook %s!\n",login);
loged=1;
}
else
{ shell.printc(ROUGE,"facebook connection problem %s ..\n",login);
log.mem2log(curl_chunk->memory,curl_chunk->size);
}
}
if(!loged) goto end; loged=0;
returnValue = curlDownload((char*)"http://apps.facebook.com/suceursdesang/",0);
if(returnValue) shell.printc(ROUGE,"%s\n",returnValue);
else { char *ptr = strstr(curl_chunk->memory,"name=\"iframe_canvas\" src=\"http://www.suceursdesang.com/jeu/?");
if(ptr)
{ shell.printc(VERT,"suceurs de sang url get, request it\n");
char *endptr = strstr(curl_chunk->memory,"\" resizable=\"true\" frameborder=");
memcpy(url,ptr+26,endptr-(ptr+26));
shell.printc(BLEU,"%s\n",url);
loged=1;
log_file alog("curl.alog.html");
alog.mem2log(curl_chunk->memory,curl_chunk->size);
}
else
{ shell.printc(ROUGE,"suceurs de sang connection problem..\n");
log.mem2log(curl_chunk->memory,curl_chunk->size);
}
}
if(!loged) goto end;
// request suceur de sang frame url ..
// transformation des char invalide dans les url..
memcpy(mptr,uptr,34);
mptr+=34;
uptr+=34;
while(*uptr)
{ if(*uptr == ';')
{ *mptr++ = '%';
*mptr++ = '3';
*mptr++ = 'B';
} else if(*uptr == '.')
{ *mptr++ = '%';
*mptr++ = '2';
*mptr++ = 'E';
} else *mptr++ = *uptr;
uptr++;
};
*mptr = 0;
zlog.mem2log(murl,strlen(murl));
// get de la frame du jeu..
returnValue = curlDownload(murl,0);
if(returnValue) shell.printc(ROUGE,"%s\n",returnValue);
else { if(strstr(curl_chunk->memory,"nosferapti"))
shell.printc(VERT,"\n ** connected !\n");
else
{ shell.printc(ROUGE,"\n ** error !\n");
log.mem2log(curl_chunk->memory,curl_chunk->size);
}
}
/*
// change my facebook status :- )
returnValue = curlDownload("m.facebook.com",0);
if(returnValue) shell.printc(ROUGE,"\nm.facebook > %s\n",returnValue);
else { char * ptr = strstr(curl_chunk->memory,"<form action=\"/home.php?");
if(ptr)
{ char *endptr = strstr(ptr+14,"\"");
char zurl[1024];
memset(zurl,0,1024);
memcpy(zurl,ptr+14,endptr-(ptr+14));
sprintf(url,"m.facebook.com%s",zurl);
char id[1024];
memset(id,0,1024);
char *idptr = strstr(endptr,"post_form_id\" value=\"");
char *endid = strstr(idptr+21,"\"");
memcpy(id,idptr+21,endid-(idptr+21));
printf("\nurl %s\nid %s\n",url,id);
//log.mem2log(curl_chunk->memory,curl_chunk->size);
char postOpt[1024]; sprintf(postOpt,"post_form_id=%s&status=%s",id,"an hello from r043v using curl !");
returnValue = curlDownload(url,postOpt);
if(returnValue) shell.printc(ROUGE,returnValue);
}
//shell.printc(VERT,"\n ** connected to m.facebook.com !\n");
log.mem2log(curl_chunk->memory,curl_chunk->size);
}*/
end:
curlEnd();
return 1;
}
int main(void)
{
facebooklogin("noferov@gmail.com","******");
printf("\nlogin end..\n");
system("pause");
si qq peu m'aider je lui en serais grandement reconnaissant,
si qq saurais aussi ou trouver les lib curl pour code::block (avec gcc ou borland comme compilo) ca serais aussi exelent, la je me suis rabatu sur visual c++ 6