2012-02-04 9 views
6

Próbuję opublikować aktywność otwartego wykresu. Właściwie działa ze statycznym plikiem .html. Ale jeśli wskażę adres URL z parametrami adresu URL, pojawia się błąd. Kod źródłowy na obu stronach jest w 100% taki sam, zaufaj mi.Dynamiczny adres URL obiektu OpenGraph nie działa

# Dynamic call 
/me/somesandbox:drive?car=http://www.domain.com/object/?og:type=somesandbox:car&og:title=Some%20car 

# Static call 
/me/somesandbox:drive?car=http://www.domain.com/static_car.html 

Błąd:
"Obiekt pod adresem URL 'http://www.domain.com/object/?og:type' typu 'www' jest nieprawidłowa, ponieważ wymagana właściwość 'og: type'. Typu 'string' nie była przewidziana"

Jeśli spojrzysz na błąd, zobaczysz, że Facebook nie uzyskał całego adresu URL. Brakuje paramerów, prawda. Proszę pomóż!

+0

spróbuj otaczać znacznik * wartości * z zachowanymi znakami cudzysłowu. – Lix

+0

Nie, to jest adres URL. Działa w przeglądarce i Linuksie URL Lintern – fabian

+0

, ale wyraźnie nie używasz go w przeglądarce lub linter. Czy uważałeś, że język, w którym piszesz, może uciekać od rozważań? – Lix

Odpowiedz

4

Adres URL obiektu Open Graph, którego próbujesz użyć, jest tym?

http://www.domain.com/object/?og:type=somesandbox:car&og:title=Some%20car 

Domyślam się, ponieważ Facebook jest już parsowania : znaki okrężnicy dla action names (tj graph.facebook.com/me/recipebox:cook?recipe=), mogą nie być bezpieczne w użyciu jako własnych parametrów.

Ponadto może wystąpić pewne zamieszanie: o ile mi wiadomo, właściwości Open Graph obiektów nie są przekazywane w adresach URL takich jak ten og:title=Some%20car. W rzeczywistości są one niekodowane na stronie, na którą wskazuje adres URL, poprzez open graph meta tags: <meta property="og:title" content="Some car" />. Jeśli więc spróbujesz ustawić właściwości obiektu za pomocą adresu URL, nie będzie działać.

Nie zapomnij użyć Lint Debug Tool, aby przetestować adresy URL obiektów Open Graph!

Prawdopodobnie jednak o tym wiesz i po prostu używasz parametrów GET URL do ustawiania tagów meta. Coś takiego?

<meta property="og:title" content="<? echo $_GET['og:title'] ?>" /> 

Jeśli tak jest, po prostu spróbuj bez dwukropków :. Jest some debate o tym, czy są one bezpieczne w adresach URL tak, ale jeśli Facebook jest również ich parsowania to będzie najbezpieczniej zostawić je w następujący sposób:

// http://www.domain.com/object/?ogtype=somesandbox:car&ogtitle=Some%20car 
<meta property="og:type" content="<? echo $_GET['ogtype'] ?>" /> 
<meta property="og:title" content="<? echo $_GET['ogtitle'] ?>" /> 

Nie testowałem tego, po prostu dając pewne sugestie próbować. Powodzenia!

+0

Pozwól mi spróbować bez tego: – fabian

+0

Zmieniono, ale ten sam błąd. – fabian

0

Facebook ma to fajne narzędzie, aby dowiedzieć się, co zobaczy facebook: https://developers.facebook.com/tools/debug wystarczy umieścić adres URL i obejrzeć debugowanie.

Nie zapomnij, te metatagi muszą być umieszczone w sekcji.

0

Mam to. @thaddeusmt: Był już na dobrej drodze.

Co jest bardzo ważne - oczywiście, że jest - trzeba kodowaćURIComponent (yoururl?z = Vars)

rozwiązać

Jeśli zdasz url tak:

/me/somesandbox:drive?car= http://www.domain.com/object/?og:type=somesandbox:car&og:title=Some%20car

Upewnij się zakodować obiektu URL. Na przykład. z Javascriptem

encodeURIComponent(http://www.domain.com/object/?og:type=somesandbox:car&og:title=Some%20car)