Povolení problém Facebook

hlasů
3

Pracuji na facebook aplikace a tam je něco, co jsem prostě nechápal, o tom, jak jejich autorizace systém funguje.

Naším základním nastavení je tato

plátno URL = domain.com/facebook

Jedná se o jednoduchou stránku s FBML Iframe prvek, který odkazuje na domain.com/facebook/app což je stránka HTML, která slouží až aplikace Flash.

Flash aplikace vyžádá další data z našeho aplikačního serveru - některé z těchto žádostí požádat o Facebooku dat (například seznam přítele IDS).

Takže Flash poté odešle požadavek na domain.com/resources/facebook/friends - Jedná se o stránku PHP, která vytváří instanci Facebook (jejich PHP knihovny) a provede nezbytné volání jejich API a vrátí data.

Nicméně požadavek na tuto adresu URL (bleskem) neověřuje, takže to je pak přesměrován na jejich přihlášení, když pak sám přesměruje zpět svou plátěnou URL se dvěma parametry - auth_token a další . Takže požadavek je platný, ale přesměrování rozbije blesku hovor.

Takže se snažím přijít na to, jak tyto jiné volání API (pokud sami muškátový květ facebook volání API) se facebook-vaildated od samého začátku.

Položena 27/01/2009 v 19:14
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
1

Ok, jsem na to přišel.

Jak to dopadá, Flash již sleduje přesměrování - to vše jsem potřeboval udělat, bylo rozpoznat (na plátně adresy URL), když tam byla žádost o povolení (poznamenat přítomností auth_token a další ) a patří k auth_token jako parametr GET, když jsem přesměrován na další adresy URL (v podstatě předat auth_token na původní žádosti).

Takže v rozporu s tím, co jsem uvedl výše, přesměrování neporušil flash volání - to prostě neměl dostatek dat, aby bylo platné žádosti.

Odpovězeno 27/01/2009 v 21:55
zdroj uživatelem

hlasů
1

Vyřešit tím, že níže uvedený kód namísto „require_login ()“ řádek

if (isset($_GET['auth_token'])) {
 $sess_data=$facebook->api_client->call_method('auth.getSession',array('auth_token'=>$_GET['auth_token']));
 $facebook->set_user($sess_data['uid'],$sess_data['session_key'],$sess_data['expires']);
 $user=$sess_data['uid'];
}
if (!$sess_data) {
 $user=$facebook->require_login();
}
Odpovězeno 24/01/2010 v 21:01
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more