Implementace Kdyby\Facebook pro přihlášení facebookem

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

Snažím se implementovat Kdyby\Facebook dle postupu https://github.com/…/en/index.md a bohužel výsledek s chybou:

Nette\MemberAccessException
Call to undefined method Kdyby\Facebook\Dialog\LoginDialog::render().

config.neon

extensions:
    facebook: Kdyby\Facebook\DI\FacebookExtension

facebook:
	appId: "xxx"
	appSecret: "xxx"
	permissions: [public_profile, email]
	graphVersion: v2.4

HomePresenter.php

class HomepagePresenter extends Presenters\BasePresenter{

	/** @var \Kdyby\Facebook\Facebook @inject */
	public $facebook;

	/** @return \Kdyby\Facebook\Dialog\LoginDialog */
	protected function createComponentFbLogin()
	{
		$dialog = $this->facebook->createDialog('login');
		/** @var \Kdyby\Facebook\Dialog\LoginDialog $dialog */

		$dialog->onResponse[] = function (\Kdyby\Facebook\Dialog\LoginDialog $dialog) {
			$fb = $dialog->getFacebook();
			if (!$fb->getUser()) {
				$this->flashMessage("Sorry bro, facebook authentication failed.");
				return;
			}
			try {
				$me = $fb->api('/me');
				if (!$existing = $this->usersModel->findByFacebookId($fb->getUser())) {
					$existing = $this->usersModel->registerFromFacebook($fb->getUser(), $me);
				}
				$this->usersModel->updateFacebookAccessToken($fb->getUser(), $fb->getAccessToken());
				$this->user->login(new \Nette\Security\Identity($existing->id, $existing->roles, $existing));
			}
			catch (\Kdyby\Facebook\FacebookApiException $e) {
				\Tracy\Debugger::log($e, 'facebook');
				$this->flashMessage("Sorry bro, facebook authentication failed hard.");
			}

			$this->redirect('Notifications:');
		};
		return $dialog;
	}
}

templates/Homepage/default.latte

{control fbLogin}

Nemám tam injectován usersModel, o tom vím. V tom ale nebude ten problém. Zřejmě jsem se do toho nějak zamotal, takže prosím o radu co nastudovat, abych toto zprovoznil. Předem díky.

looky
Člen | 99
+
0
-

Místo toho {control fbLogin} zkus

<a n:href="fbLogin-open!">Login using facebook</a>

(viz dokumentace)

flamengo
Člen | 135
+
0
-

Tak jsem změnil šablonu templates/Homepage/default.latte:

<a n:href="fbLogin-open!">Login using facebook</a>

Po kliknutí na vygenerovaný odkaz se zobrazí chyba:

Fatal Error
Class ‚Kdyby\CurlCaBundle\CertificateHelper‘ not found

Dál si nevím rady.

flamengo
Člen | 135
+
+1
-

Tak jsem stáhnul CurlCaBundle a nyní se již zobrazuje očekávaná chyba o chybějícím usersModel.
Tak nějak mne nenapadlo, že CurlCaBundle není Curl ehm.