Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][API] Co i jak ?
Forum PHP.pl > Forum > Przedszkole
dezerter_af
Witam!

Posiadam konto na strone rapids.pl mam tam bardzo dużo punktów z programu partnerskiego oraz spory transfer wykupiony. Nie dawno została dodana funkcji API... Z tego co widzę może to być bardzo przydatne ale raczej nie potrafię z tego skorzystać...Szukałem informacji na temat API, nasza Polska wikipiedia nie zawiera ich zbyt wiele, więcej się dowiedziałem ze strony angielskiej...

Ale to nadal nie zmienia faktu, że nic nie rozumiem...

Chciałbym umieścić na moim forum skrypt/aplikację whatever przez którą osoby będą mogły dodawać swoje linki i pobierać smile.gif

Na rapids.pl jest taka informacja w zakładce API:

Cytat
URL do generowania linków: http://rapids.pl/api/check

Klucz: xxxzzzxxx

W celu wygenerowania linka przez inną aplikację należy wywołać podany powyżej link metodą POST z parametrami:

key - indywidualny klucz użytkownika do API
link - link do pliku

W odpowiedzi zwrócony zostanie obiekt JSON z następującymi wartościami:

success - Flaga informująca czy link został pomyślnie dodany
url - Podany adres do pliku
message - Treść błędu
filesize - Rozmiar pliku
filename - Nazwa pliku
service - Serwis którego dotyczy plik
dlUrl - Adres URL służący do pobrania pliku


I moje pytanie brzmi jak mogę to wykorzystać? Jak umieścić? I czy jest możliwość umieszczenia takiej aplikacji na facebooku?

Dziękuje z góry za wszystkie pomocne odpowiedzi i Pozdrawiam!

thek
cURL, zwykły formularz lub inna forma wysylania informacji na serwer z ustawionymi polami wymaganymi podanymi w dokumentacji. To czy można przez Facebook nie powiem, bo nie używam smile.gif Ale domyślam się, że jeśli nie ma jakchś poważniejszych ograniczeń co do kilku funkcji takich jak JSON_encode czy obsługa zwykłego formularza to nie ma problemu.

Nie sądzę jednak by ktoś Ci za free napisał kod tego. Mogą najwyżej pomóc nieco, ale ogólnie idea taka:
1. Masz formularz i uzupełniasz, wpisując link w input, jako pole hidden jest Twój key
2. Wysyłasz jako action na dany link
3. Czekasz na zwrotkę i ją odczytujesz przez JSON_decode
4. Wiesz wszystko co trzeba by wyświetlić konieczne informacje userowi. W czasie uploadu oczywiście jakis loader, że czekasz na koniec ściągania smile.gif
dezerter_af
  1. <form action="?" onsubmit="window.location.href = 'http://rapids.pl/api/check?key=xxxzzzxxx' + '&link' + this.link.value ; return false">
  2.  
  3. Podaj link<br />
  4. <input type="text" name="link" size="40" title="Tutaj Podaj Swój nick" value="http://osiolkowo.eu" /><br /><br />
  5.  
  6.  
  7.  
  8. <input type="submit" value="Generuj" />
  9. </form>

Czy chodzi o coś takiego ?
thek
Cytat
należy wywołać podany powyżej link metodą POST z parametrami
I własnie dlatego Twój kod nie powinien zadziałać.
dezerter_af
Kod właściwie działa bo dostaje plik zwrotny który wyświetla wszystko ok plik .json


Ale co dalej mam zrobić z tym :/ ?
thek
Punkt 3 i 4 w moim poście czytałeś smile.gif
dezerter_af
Szukam właściwie teraz informacji na temat JSON_decode i nie mogę tego zawrzeć razem z tym co jest na rapids...


Chciałem to dać mniej więcej tak:

  1. <form action="?" onsubmit="window.location.href = 'http://rapids.pl/api/check?key=xxxzzzxxx' + '&link' + this.link.value ; return false">
  2.  
  3. Podaj link<br />
  4. <input type="text" name="link" size="80" title="Tutaj Podaj tresc linka" value="http://osiolkowo.eu" /><br /><br />
  5.  
  6.  
  7.  
  8. <input type="submit" value="Generuj" />
  9. </form>
  10.  
  11. <?php
  12. $json = '{"success":1,"url":2,"filename":3,"dlUrl":4,"service":5}';
  13.  
  14. var_dump(json_decode($json));
  15. var_dump(json_decode($json, true));
  16.  
  17. ?>


Ale jak nie trudno się domyślić nie działa ...

Jest może jakieś małe hello world dotyczące tego ?

Chyba źle zacząłem teraz mam tak :
  1. <form action="?" onsubmit="window.location.href = 'http://rapids.pl/api/check?key=zzzxxxzzz' + '&link' + this.link.value ; return false">
  2.  
  3. Podaj link<br />
  4. <input type="text" name="link" size="40" title="Tutaj Podaj Swój nick" value="http://osiolkowo.eu" /><br /><br />
  5.  
  6.  
  7.  
  8. <input type="submit" value="Generuj" />
  9. </form>
  10.  
  11. <?php
  12.  
  13. $input = file_get_contents("http://rapids.pl/api/check");
  14. $start = strpos($input,'(')+1;
  15. $length = strrpos($input,')') - $start;
  16.  
  17. $json = substr($dlUrl,);
  18. $output = json_decode($json,true);
  19. print_r($output);
  20.  
  21. ?>
  22.  
  23.  
  24. Znalazłem coś takiego ale to nadal nie działa :/ Już się nad tym trochę głowię i nadal nie mam pojęcia jak to dalej poprowadzić.


cały dzień nad tym siedziałem i nie mam pojęcia jak to zrobić.

Czy może ktoś mi bliżej pomóc i nakierować już po pierwszym kroku jak to ma wyglądać ?
thek
To co zrobiłeś, nie ma prawa działać. Zauważ swój pierwszy przypadek - działa jeśli masz json bezpośrednio w pliku -> zamienia do postaci object lub array. A zauważ, że sypie Ci się w 2 przypadku, a więc logiczne jest, że źle napisałeś odbiór informacji JSON z serwisu. I jest to prawda... Zobacz co się dzieje gdy dasz:
  1. $input = file_get_contents("http://rapids.pl/api/check");
  2. var_dump($input);
dezerter_af
Nadal chyba nie wiem jak to użyć i czy w ogóle ten plik jest dobrze zbudowany... Może cały formularz powinien być w php?

  1. <form action=\"?\" onsubmit=\"window.location.href = \'http://rapids.pl/api/check?key=asdasd\' + \'&link\' + this.link.value ; return false\">
  2.  
  3. Podaj link<br />
  4. <input type=\"text\" name=\"link\" size=\"40\" title=\"Tutaj Podaj Swój nick\" value=\"http://osiolkowo.eu\" /><br /><br />
  5.  
  6.  
  7.  
  8. <input type=\"submit\" value=\"Generuj\" />
  9. </form>
  10.  
  11. <?php
  12.  
  13. $input = file_get_contents(\"http://rapids.pl/api/check\");
  14. var_dump($input);
  15.  
  16. $length = strrpos($input,\')\') - $start;
  17.  
  18. $json = substr($dlUrl,);
  19. $output = json_decode($json,true);
  20. print_r($output);
  21.  
  22. ?>


Dałem jeszcze tak:
  1. <form action=\"?\" onsubmit=\"window.location.href = \'http://rapids.pl/api/check?key=asdasdasd\' + \'&link\' + this.link.value ; return false\">
  2.  
  3. Podaj link<br />
  4. <input type=\"text\" name=\"link\" size=\"40\" title=\"Tutaj Podaj Swój nick\" value=\"http://osiolkowo.eu\" /><br /><br />
  5.  
  6.  
  7.  
  8. <input type=\"submit\" value=\"Generuj\" />
  9. </form>
  10.  
  11. <?php
  12.  
  13. $input = file_get_contents(\"http://rapids.pl/api/check\");
  14. var_dump($input);
  15.  
  16. ?>


I za każdym razem na dostaje informacje czy chce zapisać na dysku plik check.json
thek
Czy ty czytasz co się do Ciebie pisze, czy po prostu udajesz ślepego? Zobacz CO Ci wypisuje var_dump( $input ), bo chyba ślepy czy niedowidzący z syntezatorem tekstu na mowę by zrozumiał, że wali tam byka i nawet pisze jakiego. Masz nieprawidłowy $input, gdyż zwyczajnie źle preparujesz dane dla rapids.pl, a na dodatek potem jeszcze nie wiesz jak to im wysłać i odebrać.
1. Musisz sprawdzić czy ktoś wysłał coś formularzem to raz, a tak tego nie zrobisz bo od razu kierujesz forma javascriptem na rapids.pl... Pytanie teraz jak Ty chcesz to odebrać po stronie serwera, skoro kierujesz to do kompa klienta? Albo robisz to po jego stronie, albo serwera, więc się zdecyduj.
2. Jeśli po stronie serwera to musisz dane mu utworzyć, do rapids.pl posłać, poczekać na zwrotkę i dopiero klientowi przedstawić. A Ty walisz po stronie serwera goły url bez jakichkolwiek parametrów i jeszcze się dziwisz, że nie działa.

Jak wół piszą jakie mają być parametry dla pliku check, ale Ty uparcie klepiesz w JS zdarzenie onsubmit, a chcesz odbierać po stronie serwera. No chłopie... użyj czasem głowy i jak Ci piszą na stronie w dokumentacji, jak ma być, to ich słuchaj i nie twórz jakichś własnych kombinacji, które nie wiadomo czemu mają służyć. Jak dla osoby postronnej to kompletnie nie wiesz co robisz, tylko znalazłeś na jakiejś stronie o tym onsubmit. Nie rozumiesz co robisz, ale rzekomo działa i się uparłeś, że tak ma być i koniec. Nawet jeśli ktoś mówi Ci, że robisz źle i gdzie masz błąd. To, że logika skryptu powinna być przed wyświetleniem danych już pominę milczeniem, bo to podstawowy błąd jaki robią początkujący. Prawidłowy i działający kod jest niewiele dłuższy niż pierwszy kod w Twoim ostatnim poście. Ale trzeba się najpierw posłuchać i spróbować zrobić co Ci ktoś sugeruje.
dezerter_af
Przepraszam, za moję błędy ale wynikają one tylko i wyłącznie z braku doświadczenia i wiedzy na dany temat.

Napisany skrypt ma zamiar udostpęnić bo pewnie nie jednej osobie się przyda smile.gif

Poprawiłem formuladz ale nadal nie wiem co ma być w tym <?php

  1. <form action="?" method="post" >
  2. <input type="hidden" id="key" name="key" value="drrryyy" />
  3. Podaj link<br />
  4. <input type="text" id="link" name="link" size="80" title="Tutaj Podaj Swój nick" value="xxx" /><br /><br />
  5.  
  6.  
  7.  
  8. <input type="submit" value="Generuj" />
  9. </form>
  10.  
  11. <?php
  12.  
  13. $input = file_get_contents("http://rapids.pl/api/check");
  14. var_dump($input);
  15.  
  16. $length = strrpos($input,')') - $start;
  17.  
  18. $json = substr($dlUrl,);
  19. $output = json_decode($json,true);
  20. print_r($output);
  21.  
  22. ?>



A jeżeli chodzi o :

  1. $json = substr($dlUrl,);
  2. $output = json_decode($json,true);
  3. print_r($output);


To dla każdego parametru:
Cytat
success - Flaga informująca czy link został pomyślnie dodany
url - Podany adres do pliku
message - Treść błędu
filesize - Rozmiar pliku
filename - Nazwa pliku
service - Serwis którego dotyczy plik
dlUrl - Adres URL służący do pobrania pliku


Mam pisać te 3 linijke tylko, że z podmienionym kodem?
thek
Ty chyba Wcale NIE czytasz co się pisze... Jak wół piszę, że źle jest
$input = file_get_contents("http://rapids.pl/api/check");
Ponieważ idzie żądanie do API bez parametrów jakichkolwiek. Na dodatek wcale nie odbierasz parametrów z tablicy POST by ich w żądaniu do API użyć. Na ten moment $_POST['link'] gdzieś widzisz w użyciu? Bo ja nie. Tobie nie jest potrzebny skrypt tylko porządna nauka podstaw pisania formularzy w PHP. Zacznij od tego zanim zaczniesz jakiegokolwiek API używać.
Google i: kurs php formularz
I wróć gdy zrobisz choćby prostą obsługę formularza. Póki co cały czas niemal ten sam skrypt przeklejasz, a to nie ma sensu żadnego. Forum jest od pomocy z problemami konkretnymi, a nie upominaniem, że problem jest trywialny, tylko user nie umie podstaw jakichkolwiek i stąd jego problem. Ty nie umiesz ani JavaScriptu, ani HTML, ani PHP i chcesz rozwiązanie, a jedyne co potrafisz to poszukać gotowca w google, którego i tak nie zrozumiesz. Dlatego temat zmykam, bo jego ciągnięcie nie ma sensu z braku chęci jakiejkolwiek nauki z Twojej strony.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.