Facebook aplikace – proces autentizace

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
potapnik
Člen | 127
+
0
-

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
+
0
-

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…

besir
Člen | 170
+
0
-

Nevim jestli je aktualni, ale tusim ze to nebude problem scriptu here, ale v nastaveni appky na FB. Tam se nastavuje kam se redirektne po pristupu na ni :-)

22
Člen | 1478
+
0
-

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.