Пишу приложение с API Vkontakte

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Vasa2, 24 Nov 2011.

  1. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    Пишу приложение с API Vkontakte.

    Вроде все правильно делаю но всегда выдает ошибку №4
    "Incorrect signature "

    Вот код.

    PHP:
    function md5(sstring): string;
    begin
      Result 
    := '';
      
    with TIdHashMessageDigest5.Create do
      try
        
    Result := AnsiLowerCase(AsHex(HashValue(s)));
      finally
        
    Free;
      
    end;
    end;

    procedure TForm1.Button1Click(SenderTObject);
    var
    resp:widestring;
    begin
    resp
    :=idhttp1.get('http://api.vkontakte.ru/api.php?v=3.0&api_id='+Edit2.text+'&method=getProfiles&uids=1346525&sid='+sid+'&sig='+sig);// Edit1-id пользователя, Edit2- id приложения
    memo1.text:=resp;
    end;

    procedure TForm1.Button2Click(SenderTObject);
    begin
    form2
    .visible:=true;
    end;

    procedure TForm1.Button3Click(SenderTObject);
    begin
    sid
    :=label4.Caption;
    secret:=label5.Caption;;
    sig:=Edit1.text+'api_id='+Edit2.Text+'method=getProfilesv=3.0'+secret//подпись запроса + секрет сессии Edit1-id пользователя, Edit2- id приложения
    label6.Caption:=sig;
    sig:=md5(sig);
    label7.caption:=sig;
    end;

    end.

    sid и secret получаю при авторизации в WebBrowser таким образом:


    PHP:
    URL:=WebBrowser1.LocationURL;
    start3:=Pos('secret%22%3A%22',URL);
    stroka3:=Copy(URLstart3+15900);
    Delete(stroka3Pos('%22%2C%22expire',stroka3) , 5900);
    Label4.caption:=stroka3;
    form1.Label4.caption:=stroka3;

    start2:=Pos('sid%22%3A%22',URL);
    stroka2:=Copy(URLstart2+12500);
    Delete(stroka2Pos('%22%2C%22secret',stroka2) , 5900);
    Label5.caption:=stroka2;
    form1.Label5.caption:=stroka2;



    Подскажите где ошибся
     
    #1 Vasa2, 24 Nov 2011
    Last edited: 25 Nov 2011
  2. X-rus

    X-rus Member

    Joined:
    22 Dec 2010
    Messages:
    88
    Likes Received:
    22
    Reputations:
    4
    Лучше использовать вот это - Клиентская авторизация для Standalone-приложений и мобильных клиентов (Implicit Flow)

    http://vkontakte.ru/developers.php?o=-1&p=Авторизация&s=

    Потом, чтобы выполнить метод API, нужно составить такую конструкцию:
    https://api.vkontakte.ru/method/METHOD_NAME?PARAMETERS&access_token=ACCESS_TOKEN
     
    #2 X-rus, 25 Nov 2011
    Last edited: 25 Nov 2011