накаталд функцию для инвайта в группу по кукам. В ответе от сервера вываливается ошибка безопасности. В чем же может быть дело? оО Code: function InviteGr(id, gid, sid: string): string; var HTTP : TidHTTP; hash : string; Temp : string; Page : TStringList; Post : TStringList; Cook : TidCookieManager; I : Integer; begin HTTP := TidHTTP.Create(nil); Cook := TidCookieManager.Create(nil); Page := TStringList.Create; Cook.AddCookie('remixsid=' + sid, 'vkontakte.ru'); Cook.AddCookie('remixchk=5;', 'vkontakte.ru'); Cook.AddCookie('remixclosed_tabs=0;', 'vkontakte.ru'); Cook.AddCookie('remixlang=0;', 'vkontakte.ru'); Cook.AddCookie('remixgroup_closed_tabs=0;', 'vkontakte.ru'); Cook.AddCookie('audio_vol=52', 'vkontakte.ru'); HTTP.Request.Referer := 'http://vkontakte.ru/club' + gid; HTTP.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 MRA 5.6 (build 03278) Firefox/3.6 sputnik 2.1.0.18'; HTTP.Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; HTTP.Request.AcceptLanguage := 'ru,en-us;q=0.7,en;q=0.3'; HTTP.Request.Connection := 'keep-alive'; HTTP.Request.ContentType := 'application/x-www-form-urlencoded; charset=UTF-8'; HTTP.Request.Pragma := 'no-cache'; HTTP.Request.CacheControl := 'no-cache'; HTTP.Request.Host := 'vkontakte.ru'; HTTP.Request.AcceptCharSet := 'windows-1251,utf-8;q=0.7,*;q=0.7'; HTTP.Request.CustomHeaders.Add('X-Requested-With: XMLHttpRequest'); HTTP.CookieManager := Cook; HTTP.AllowCookies := True; HTTP.HandleRedirects := True; Page.Text := HTTP.Get('http://vkontakte.ru/club' + gid); for I := 0 to Page.Count -1 do begin If Pos('act=a_invite_friends', Page[i]) <> 0 Then begin hash := Page[i]; ShowMessage(hash); hash := Copy(hash, Pos('decodehash', hash) +12, Length(hash)); Delete(hash, Pos(#39, hash), Length(hash)); end; end; Post := TStringList.Create; Post.Add('friends=' + id); Post.Add('gid=' + gid); Post.Add('hash=' + DecodeHash(hash)); Temp := HTTP.Post('http://vkontakte.ru/groups_ajax.php?act=a_invite_friends', Post); Post.Free; Page.Free; Http.Free; Cook.Free; end;
Заголовки: Code: HTTP/1.1 200 OK Server:nginx/0.7.59 Date:Mon, 01 Mar 2010 18:57:44 GMT Content-Type:text/html; charset=windows-1251 Connection:keep-alive X-Powered-By:PHP/5.2.6-1+lenny3 Pragma:no-cache Cache-control:no-store Vary:Accept-Encoding Content-Length:32 Тело: Code: {"error":"Ошибка безопасности."}
http://yavkontakte.ru/kody-oshibok-vkontakte-otvety-kontakty-pri-zapretax.html тут посмотри, список всех ошибок вконтакте и ты кстати забыл в try finally функцию обернуть
скорее всего что то где то пропустил, или эта ошибка просто не систематизирована в вк у меня нет функции DecodeHash, проверить у себя не могу
ау!! народ! в чем там дело? о_О приведу код DecodeHash, если вы в нем сомниваетесь) Code: function DecodeHash(chas: string): string; var Decchas : string; str : string; I : Integer; Len : integer; begin str := Copy(chas, 6, 12); Len := Length(str); For I := 0 To Length(str) -1 do begin Decchas := Decchas + str[len]; Inc(len, -1); end; str := Copy(chas, 21, Length(chas) -5); str := str + Copy(chas, 5, 1); Len := Length(str); For I := 0 To Length(str) -1 do begin Decchas := Decchas + str[len]; Inc(len, -1); end; Result := Decchas; end;
Ты не так понял. Я не сомневался в decodehash, я вообще не знаю что это за функция и для чего она нужна, я говорил о том что проверить не могу, потому что у меня ее нет. Так, а ты на разных группах тестил? На открытых тоже? Вот например у тебя строку act=a_invite_friends находит даже когда нет ссылки на приглашение друзей, надо дополнительно проверять возможность приглашения в группу. Так, и еще ты не написал когда именно происходит ошибка, в 1-ом или 2-ом запросе.