[Facebook] Linki wewnątrz iframe'a prowadzą do zewnętrznego serwera

Witam,

Problem w zasadzie taki jak w temacie. Mam aplikację na facebooka napisaną w Rails 3 z wykorzystaniem devise’a oraz omniauth. Podczas korzystania z aplikacji i otworzeniu któregoś z linków w nowej karcie, ładuje się aplikacja na zewnętrznym serwerze (z którego pochodzi). Linki nie mają automatycznie dodanej domeny facebookowej.

Czy ktoś spotkał się z takim problemem?

z góry dziękuję

To normalne chyba zachownie iframe? Musisz samemu sprawdzac czy strona otworzyla sie w facebookowym iframe czy ‘luzem’ i odpowiednio przekierowywac.

A czy jest sposób, żeby zmienić nazwę domeny w generowanych linkach helperami? Np: products_path

Widziałem na FB aplikacje które miały od razu pogenerowane tego typu linki bezpośrednio już w iframe.

[quote=dazz]A czy jest sposób, żeby zmienić nazwę domeny w generowanych linkach helperami? Np: products_path

Widziałem na FB aplikacje które miały od razu pogenerowane tego typu linki bezpośrednio już w iframe.[/quote]
Helpery *_path nie zwracają nazwy domeny/hosta w ścieżce gdyż generują ścieżki względne.

No bo chodzi o to że na przykład:

Mam aplikację na stronie “moja-strona.pl” - można z niej korzystać wchodząc bezpośrednio na tę stronę lub skorzystać z aplikacji facebookowej wchodząc na adres: “http://apps.facebook.com/moja-app

Aplikacja zawiera menu. Jeżeli skorzystamy z aplikacji wchodząc na stronę “moja-strona.pl” linki w menu będą wyglądać następująco: “moja-strona.pl/menu1”, “moja-strona.pl/menu2”. Okazało się, że jeżeli wejdziemy do aplikacji za pomocą adresu “http://apps.facebook.com/moja-app” i podejrzymy linki menu (w kodzie) to będą one również wyglądały tak jak poprzednie, czyli: “moja-strona.pl/menu1” itd. Muszę znaleźć sposób aby po wejściu do aplikacji przez Facebook’a linki wyglądały tak: “http://apps.facebook.com/moja-app/menu1”, “http://apps.facebook.com/moja-app/menu2”. Nie mam zupełnie pomysłu jak to zrobić. W ogóle nie wiem nawet czy to nie kwestia odpowiedniej konfiguracji Virtual Hosta w Apache’u. Nie chciał bym jednak zmieniać wszystkich linków w aplikacji ręcznie na chama. Czy jest może jakieś jedno miejsce w projekcie railsowym, w którym można to zdefiniować?

pozdr

Niestety, jesteś w błędzie.

Aplikacja Facebookowa otwiera się w ramce (iframe) i jeżeli dałbyś linki takie jak mówisz (czyli http://apps.facebook.com/…) to wewntątrz ramki na aplikację pojawiłby Ci się zaembedowany cały facebook z twoją aplikacją… Musisz znaleźć inne rozwiązanie (np. sprawdzać JSem na każdej stronie jaka jest wartość top.location.href)

Znalazłem rozwiązanie.

W application_controller dodajemy metodę:

def default_url_options(options = nil) { :host => "example.com" } end
I teraz jeżeli zamiast (przykładowo) “products_path” użyjemy “products_url”, to wygeneruje nam link “http://example.com/products”.

Dziękuję wszystkim za czas i pomoc.

pozdrawiam