Facebook aplikace – proces autentizace
- potapnik
- Člen | 127
Takže jsem trochu v koncích. Mám FB aplikaci, která se autorizuje nějak pochybně…kód promluví za vše. Tohle je výcus z BasePresenteru:
// FB permissions needed
var $permissions_needed = array(
'email',
'publish_stream',
);
protected function startup() {
$facebook = $this->context->facebook;
$permissions_needed_stream = implode(', ', $this->permissions_needed);
$location = $facebook->getLoginUrl(array('scope' => $permissions_needed_stream));
$facebook_user_id = $facebook->getUser();
parent::startup();
// does we have a valid FB user ID?
if($facebook_user_id) {
try {
// permisssion which user gave us
$permissions_given = $facebook->api('/me/permissions');
} catch (FacebookApiException $e) {
// there are no permissions, so redirect to authentication form
print '<script>top.location.href="'.$location.'";</script>';
$this->terminate();
}
// check each required permission
foreach($this->permissions_needed as $pn) {
if(!array_key_exists($pn, $permissions_given['data'][0])) {
// there is not the needed permission, redirect to authentication form
print '<script>top.location.href="'.$location.'";</script>';
$this->terminate();
}
}
} else {
// we have no user, no cash, no wonder, no hope...
print '<script>top.location.href="'.$location.'";</script>';
$this->terminate();
}
}
Princip je, že chci autorizovat aplikaci plus chci nějaká práva – na zápis na wall, chci znát email uživatele, možná časem i něco jiného – proto tam je ta kontrola všech oprávnění, když už je uživatel přihlášen. Nemá někdo prosím zkušenosti s tím, jak to udělat v kooperaci s Nette korektně. To, že se mi nelíbí ten print script, je doufám všem jasný, ale zatím jsem nepřišel na to, jak to udělat jinak líp…díky moc všem za případnou pomoc! :-)
- potapnik
- Člen | 127
Co se týče přímo problému s appkou: autorizuje se poprvý jako appka a hned poté se spustí autorizace dodatečných parametrů, poté mě to redirektne ne na stránky appky na Facebooku, ale přímo na stránky tý aplikace, což nechci, chci, aby to běželo pořád v okně FB, stejně jako ostatní FB aplikace. Už si opravdu nevím rady…
- 22
- Člen | 1478
V canvas aplikaci si nastav redirectUri manuálně na adresu té appky na FB, jinak vyžadovat všechny různé permission hned na začátku odradí asi ta 50% uživatelů povolit cokoliv vč. e-mailu. Dodatečné permissions by jsi měl chtít, až jsou opravdu potřeba, tzn. až uživatel provede akci, která taková permission vyžadují a bude mu jasné, proč to po něm aplikace chce.