Wpis z mikrobloga

Jak ma być obliczony podpis? Próbowałem już nie wiem ile kombinacji stąd, ale nawet w przykładzie nie wychodzi mi to co podali. Co tam jest użyte, php? Jak mam to obliczyć w bashu? Na chwilę obecną mam coś takiego, co nie działa:

md5key=$(echo -n "$secret" | md5sum | awk '{print $1}')
md5url=$(echo -n "$url" | md5sum | awk '{print $1}')
md5data=$(echo -n "$data" | md5sum | awk '{print $1}')

#echo "$md5key$md5url$md5data"
md5all=$(echo -n "$md5key$md5url$md5data" | md5sum | awk '{print $1}')

gdzie wiadomo, $secret to secret, $url to

[https://a2.wykop.pl/entries/add/appkey/APPKEY/token/USERKEY/](https://a2.wykop.pl/entries/add/appkey/APPKEY/token/USERKEY/)
a $data to treść przekazywana do wpisu. $md5all to próba połączenia tego md5 z dokumentacji.

Ktoś coś?

#api #wykopapi
  • 11
via Wykop Mobilny (Android)
  • 0
@Bielecki: secret+URL (bezpośrednio na jaki idzie request czyli z wszystkimi parametrami przekazanymi w URL) + wartości pół post posortowanie alfabetycznie po nazwie pola oddzielone przecinkami
@sokytsinolop: @Stivo75: Prawdopodobnie w ogóle podpis nie dociera do api. Jaki header muszę ustawić? Wysyłam zapytanie curlem, jeśli dam

curl -v -H "$md5all" -X POST --data "body=$data" "$url"
to w ogóle nie mam tego w wysłanych danych. Muszę chyba wstawić coś w stylu "Content-Type:", etc, ale nie wiem co - w dokumentacji tego nie widzę
@Bielecki: tak, Content-Type application/x-www-form-urlencoded jeśli wysyłasz same pola tekstowe, multipart/form-data jeśli wysyłasz też plik
header z podpisem musi sie nazywać "apisign", oczywiście kolejny mały fuckup bo wykop mówi, ze header ma się nazywać "apisign" a dokumentacja HTTP mówi że nazwa każdego nagłówka rozpoczyna się od wielkiej litery ;) na szczęście działa ;)
@sokytsinolop: No, nareszcie mam inny błąd niż niepoprawny podpis XD
Czyli już wiem jak generować podpis i jak przesyłać te informacje - w bashu musiałem obliczyć md5 w ten sposób:
md5all=$(echo -n "$secret$url$data" | md5sum | awk '{print $1}').
Mam tylko teraz błąd "Ta aplikacja nie ma uprawnień do wykonania tej operacji" - mianowicie próbuję dodać wpis na mirko. Tworząc aplikację przyznałem te uprawnienia, połączyłem swoje konto akceptując je, a
@Bielecki: pierwsze request na login/index przynajmniej w api v2, dodatkowy parametr (named param, czyli w adresie accountkey/wartosc) to accountkey który dostaniesz łącząc konto z aplikacją w odpowiedzi dostaniesz userkey, który dodajesz jako namedparam do każdego requesta wymagającego autoryzacji