LavokWWW
-
Postów
7 -
Dołączył
-
Ostatnia wizyta
Typ zawartości
Profile
Forum
Pliki
Galeria
Blogi
Sklep
Wydarzenia
Odpowiedzi opublikowane przez LavokWWW
-
-
12 godzin temu, maxerxxl napisał:
Hej. Myślę że ten temat Ci pomoże.
Dzięki za podsunięcie rozwiązania.
W stworzonej już aplikacji, w developer center w zakładce Extensions utworzyłem rozszerzenie dla MemberSync, utworzył się plik z funkcjami, wstawiłem swój kod w funkcji onEmailChange ale coś jest dalej nie tak, bo żądanie nie dociera (brak wpisu w pliku error.log w głównym folderze motywu wordpressa). Po wprowadzeniu zmian rekompilowałem pliki IPS'a (Support->coś jest nie tak, bodajże ) ale nic to nie pomogło... Nie rozumiem o co chodzi.. -
Witam,
mam problem ze znalezieniem w plikach IPS kodu odpowiedzialnego za zmianę emaila zalogowanego użytkownka..
Chcialbym aby podczas zmiany emaila przez zalogowanego użytkownika forum wysłane zostało żądanie curlem do innej strony www ( Wordpress ) po to aby na tej stronie również został zmieniony email tegoż użytkownika, niestety nie mogę znaleźć odpowiedniej klasy i funkcji do nadpisania lub coś jest nie tak z czymś innym i żądanie nie zostaje wysłane..
Kod odpowiedzialny za wysłanie żądania umieszczałem m.in w klasie IPS\Member w metodach validationComplete(), save() i w klasie IPS\Settings, metodzie changeValues(). Klasy nadpisywałem..
Wygląda to tak jakby żądanie nie zostało wysłane z IPS'a (żądanie powinno utworzyć wpis w odpowiednim pliku .log na serwerze WP). Gdy wysyłałem żądanie z aplikacji Advanced Rest Client do WP, wpis się dodawał, więc po stronie Wp wszystko jest raczej ok.. Kod żądania curl podaje niżej:
$url ="jakiś_dobry_url"; $apiKey = 'jakiś_dobry_key'; $curl = curl_init(); $data = array("msg" => 'update' ); curl_setopt($curl, CURLOPT_URL, $url ); curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE ); curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC ); curl_setopt($curl, CURLOPT_POST, 1 ); curl_setopt($curl, CURLOPT_POSTFIELDS, $data ); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); $response = curl_exec( $curl ); curl_close($curl);
Czy umieściłem kod żądania nie tam gdzie trzeba? Czy mógłby ktoś wskazać którą klasę powinienem nadpisać i najlepiej też funkcję? Proszę o pomoc..
-
I wiem już o co chodziło: nazwa funkcji była niepoprawna - powinno być GETindex(), a nie GETtopics() nazwa funkcji ma tu znaczenie...
- 1
-
2 minuty temu, DawPi napisał:
To widziałem.
Teraz jestem na telefonie. Jak bardzo chcesz to jutro pomyślę.
A to mniejsza z tym wtedy.. dzięki jeszcze raz za pomoc -
Cytat
Dlaczego nie skorzystasz z gotowego endpointa pod to: https://invisioncommunity.com/developers/rest-api?endpoint=forums/topics/GETindex
Jakoś mi to prędzej nie przyszło do głowy.. Użyłem ten endpoint przed chwilą z nowo wygenerowanym kluczem i jest już zwracana normalna odpowiedź.. Także @DawPi dzięki za pomoc, wykorzystam ten endpoint...
I jeżeli to nie wymaga większej rozkminy @DawPi mógłbyś powiedzieć co było nie tak z moim endpointem? Powinienem go przed użyciem zarejestrować jakoś czy coś? Generalnie nie dodawałem żadnego kodu PHP nigdzie oprócz tego skryptu topics.php w folderze api swojej aplikacji..
A tutaj jeszcze wkleję co piszą o tym błędzie:
Code: 3S291/2
Message: BAD_METHOD
Description: The endpoint the request was sent to does not exist - the HTTP request method may be incorrect (for example, sending a GET rather than a POST). -
Witam,
Tworzę prosty widżet na WordPress'ie, który będzie wyświetlał kilka pierwszych tematów z forum (IPS 4.4.1). W tym celu usiłuję napisać prostą aplikację po stronie IPS, która będzie zwracać te tematy (tytuł + odnośnik). A więc utworzyłem aplikację w ACP, wygenerowałem klucz API dla tej aplikacji, w folderze API mojej aplikacji utworzyłem odpowiedni plik (zawartość skopiowałem z core/api/hello.php i odpowiednio zmodyfikowałem ). Próbuję po stronie WP wysłać żądanie curlem do IPS'a ale cały czas dostaje error BAD METHOD. Pytanie dlaczego? To samo jest gdy wklepie w przeglądarce http://postsspot.pl/forum/api/index.php?/ppfwdgt/topics&key=api_key. Oczywiście klucz wpisuję prawidłowy.
Podsyłam kod PHP funkcji po stronie WP:
<?php function pp_get_forum_topics(){ $apiKey = 'jakisapikey'; $url = 'http://postsspot.pl/forum/api/index.php?/ppfwdgt/topics'; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://postsspot.pl/forum/api/index.php?/ppfwdgt/topics"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE ); curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC ); curl_setopt($curl, CURLOPT_USERPWD, "{$apiKey}:" ); $response = curl_exec( $curl ); if (curl_error($curl)) { $error_msg = curl_error($curl); } if (isset($error_msg)) { print_r( $error_msg ); }else{ return $response; } curl_close($curl); } ?>
Kod PHP skryptu topics.php w folderze applications/ppfwdgt/api (kod jeszcze nie zwraca tematów):
<?php /** * @brief Hello API * @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a> * @copyright (c) Invision Power Services, Inc. * @license https://www.invisioncommunity.com/legal/standards/ * @package Invision Community * @since 3 Dec 2015 */ namespace IPS\ppfwdgt\api; /* To prevent PHP errors (extending class does not exist) revealing path */ if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) ) { header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' ); exit; } /** * @brief Hello API */ class _topics extends \IPS\Api\Controller { /** * GET /ppfwdgt/topics * Get three latest topics. * * @return array * @apiresponse string communityName The name of the community * @apiresponse string communityUrl The community URL * @apiresponse string ipsVersion The Invision Community version number */ public function GETtopics() { return new \IPS\Api\Response( 200, array( 'message' => "works" ) ); } }
Czy coś pominąłem? Coś zrobiłem źle? Proszę o pomoc
Kod odpowiedzialny za zmianę emaila zalogowanego użytkownika?
w Programowanie / tworzenie styli
Opublikowano
Już wszystko działa.. w pewnym momencie niepotrzebnie zakomentarzowałem linijkę kodu w której ustawiałem pole CURLOPT_USERPWD ? Temat do zamknięcia..