Nemáte někdo vyřešení přihlašování přes Twitter nebo Facebook?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
David Grudl
Nette Core | 8218
+
0
-

Nemáte někdo vyřešení přihlašování přes Twitter nebo Facebook a jste ochotni se o ně podělit? Moc rád bych to dal jako příklad do distribuce. Samozřejmě se zachováním vašeho copyrightu.

srigi
Nette Blogger | 558
+
0
-

Mam to vyriesene s tym tvojim dg/twitter. Ale raz som ti uz spominal, ze treba mierne modifikovat metodu request(), lebo nepocita s MIME text/plain, ktora sa prave posiela pri OAuth. Mam to napisane v Yii, ale to hadam nebude problem (MVC klasika). Idem to vysekat z projektu.

Radek Hulán
Člen | 7
+
0
-

Facebook Connect skript mohu poskytnout.. (není to pro Nette přímo, ale nepoužívá to žádný další framework)

JajazXbm
Člen | 29
+
0
-

Přihlášení přes facebook máme v nette implementované tady: http://www.tripomatic.com/ pokud to chceš poslat, tak se ozvi na: michal.sanger@twobits.cz

srigi
Nette Blogger | 558
+
0
-

Toz hotovo. Vecer to este trocha uhladim, dopisem README, mozno nahodim live. Co sa tyka rozdielov Yii<->Nette: myslim, ze nebude problem, jedna sa v podstate o dve akcie v OAuthController + nejaky kod v OAuthIdentity. Obidva tieto frameworky su si v tychto ohladoch velmi podobne, takze premigrovat to bude brnkacka.

BTW v OAuthController je 1× pouzite goto. Odvazil som sa k tomuto kroku po Webexpo 2011 a Rasmusovej prednaske. Ak ma niekto cistejsie riesenie ako riesit DRY, poslite pull.

voda
Člen | 561
+
0
-

srigi napsal(a):
BTW v OAuthController je 1× pouzite goto. Odvazil som sa k tomuto kroku po Webexpo 2011 a Rasmusovej prednaske. Ak ma niekto cistejsie riesenie ako riesit DRY, poslite pull.

Stačí přesunout $this->redirect do try sekce.

Jan Jakeš
Člen | 177
+
0
-

Úplně jednoduchá varianta ověření přes Facebook jde vyřešit takto:
(Přes Facebook pouze ověříme uživatele a pak nastartujeme normálně Nette session.)

Config:

services:
	facebook: Facebook([appId: %facebookApp.appId%, secret: %facebookApp.secret%])

parameters:
	facebookApp:
		appId: 'your_app_id'
		secret: 'your_app_secret'

Ověření:

$user = $this->context->facebook->getUser();

// zde vytáhnout data z FB API a použít dle libosti

// okamžité odpojení od FB
$fbCookieName = 'fbsr_' . $this->context->facebook->getAppId();
if ($this->context->httpRequest->getCookie($fbCookieName) !== NULL) {
	$this->context->httpResponse->deleteCookie($fbCookieName);
}
$this->context->facebook->destroySession();

Odkaz na přihlášení přes FB si předáme do šalony:

$this->template->facebookLoginUrl = $this->context->facebook->getLoginUrl();

To je vše. Žádné FBML, přitom pro ověření uživatele plně dostačující.

Editoval Juan (13. 2. 2012 2:21)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Tohle řešení od Martina Sadového (sodae/netrium-addons-twitter) je instantně dobré :). Stačí zaregistrovat extension a vyplnit v configu:

twitter:
	consumerKey: ...
	consumerSecretKey: ...

Na straně Twitteru sice nelze vyplnit adresu http://localhost pro testování, ale to lze vyřešit pomocí System32/drivers/etc/hosts a uvedením fiktivní adresy. A pokud jsem to dobře pochopil, tak aby to bezproblémově fungovalo, je třeba vyplnit v nastavení vaší Twitter aplikace kolonku Callback URL vpodstatě čímkoliv (nějakou URL).