Facebook machtiging probleem

stemmen
3

Ik ben bezig met een Facebook-app en er is iets wat ik ben gewoon niet te begrijpen over hoe hun toestemming systeem werkt.

Onze basis setup is dit

canvas URL = domain.com/facebook

Dit is een eenvoudige pagina met een FBML iframe element dat wijst naar domain.com/facebook/app dat is een HTML-pagina die serveert een Flash-toepassing.

De Flash-toepassing de aanvrager om aanvullende gegevens uit onze applicatieserver - sommige van die verzoeken vragen om facebook data (zoals een lijst van vriend IDs).

Dus Flash maakt vervolgens een verzoek om domain.com/resources/facebook/friends - dit is een PHP-pagina die een Facebook-instantie (hun PHP library) creëert en voert de nodige oproep om hun API en de gegevens terug.

Echter, de vraag naar deze URL (met flash) niet valideren, dus het wordt dan doorgestuurd naar hun login wanneer dan omgeleid zichzelf weer mijn canvas URL met twee parameters - auth_token en volgende . Dus de vraag is geldig, maar de omleiding breekt de flash gesprek.

Dus, ik probeer om erachter te komen hoe deze andere API-calls te maken (als zichzelf mace facebook API calls) worden facebook-vaildated uit de get-go.

De vraag is gesteld op 27/01/2009 om 19:14
bron van user
In andere talen...                            


2 antwoorden

stemmen
1

Ok, ik dacht dat het uit.

Het blijkt dat, Flash volgt reeds de redirects - alles wat ik moest doen was op te sporen (naar het doek URL) toen er een autorisatieverzoek (opgemerkt door de aanwezigheid van auth_token en volgende ) en omvatten de auth_token als een GET parameter als ik doorgestuurd naar de volgende URL (in principe, zendt het auth_token op de oorspronkelijke aanvraag).

Dus, in tegenstelling tot wat ik hierboven al zei, de redirect niet de flash oproep niet breken - het gewoon niet genoeg gegevens hebben om een ​​geldig verzoek.

antwoordde op 27/01/2009 om 21:55
bron van user

stemmen
1

Op te lossen door de invoering van de onderstaande code in plaats van de "require_login ()" lijn

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();
}
antwoordde op 24/01/2010 om 21:01
bron van user

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