Facebook callback problém
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- HonDem
- Člen | 30
Ahoj. Snažím se vytvořit facebook login pomocí Kdyby\Facebook. Všechno se mi podařilo zprovoznit. Jakmile ale stisknu tlačítko „Login using facebook“, tak mi to vyhodí „Sorry bro, facebook authentication failed.“ pokoušel jsem se dumpnout $fb->getUser() a vytasilo to na mě fatal error, že nemůže najít callback() funkci. Prosím dokázali byste mi tady někdo nějak poradit? :) Předem děkuji
Error:
0
Fatal error: Call to undefined function Kdyby\Facebook\Diagnostics\callback() in vendor/kdyby/facebook/src/Kdyby/Facebook/Diagnostics/Panel.php on line 78
SignPresenter.php – createComponentFbLogin()
/** @return \Kdyby\Facebook\Dialog\LoginDialog */
protected function createComponentFbLogin()
{
$dialog = $this->facebook->createDialog('login');
$dialog->onResponse[] = function (\Kdyby\Facebook\Dialog\LoginDialog $dialog) {
$fb = $dialog->getFacebook();
//Tady se to zastaví (když tady dumpnu $fb->getUser()) ukáže se mi error hláška - výše
if (!$fb->getUser()) {
$this->flashMessage("Sorry bro, facebook authentication failed.");
return;
}
/**
* If we get here, it means that the user was recognized
* and we can call the Facebook API
*/
try {
$me = $fb->api('/me');
if (!$existing = $this->usersModel->findByFacebookId($fb->getUser())) {
/**
* Variable $me contains all the public information about the user
* including facebook id, name and email, if he allowed you to see it.
*/
$existing = $this->usersModel->registerFromFacebook($fb->getUser(), $me);
}
/**
* You should save the access token to database for later usage.
*
* You will need it when you'll want to call Facebook API,
* when the user is not logged in to your website,
* with the access token in his session.
*/
$this->usersModel->updateFacebookAccessToken($fb->getUser(), $fb->getAccessToken());
/**
* Nette\Security\User accepts not only textual credentials,
* but even an identity instance!
*/
$this->user->login(new \Nette\Security\Identity($existing->id, $existing->roles, $existing));
/**
* You can celebrate now! The user is authenticated :)
*/
} catch (\Kdyby\Facebook\FacebookApiException $e) {
/**
* You might wanna know what happened, so let's log the exception.
*
* Rendering entire bluescreen is kind of slow task,
* so might wanna log only $e->getMessage(), it's up to you
*/
\Tracy\Debugger::log($e, 'facebook');
$this->flashMessage("Sorry bro, facebook authentication failed hard.");
}
$this->redirect('this');
};
return $dialog;
}
Editoval HonDem (4. 8. 2015 0:49)
- jiri.pudil
- Nette Blogger | 1029
Co používáš za verzi Kdyby/Facebook? Ve 2.0 by tohle mělo být opraveno
- jiri.pudil
- Nette Blogger | 1029
No především je tam vyřešená kompatibilita s Nette 2.3, což je zřejmě to, s čím se tady potýkáš :)