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
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.