Facebook API vrací pouze id a name

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

Ahoj. Chtěl jsem se zeptat, jak je možné, že při zavolání $fb->api(‚/me‘) obsahuje výsledný ArrayHash pouze name a id? V configu mám

facebook:
    appId: '***'
    appSecret: '***'
    permissions: [public_profile, email]
    graphVersion: v2.4

a při přihlášení to uživatele skutečně požádá o přístup k emailu a veřejnému info o profilu.
Potom v presenteru mám

$dialog->onResponse[] = function (\Kdyby\Facebook\Dialog\LoginDialog $dialog) {
            $fb = $dialog->getFacebook();

            if (!$fb->getUser()) {
                $this->flashMessage("Authentication failed.");
                return;
            }

            try {
                $me = $fb->api('/me');
                dump($me);
                exit();

                if(!$this->registerModel->userExists($fb->getUser())){
                    $this->registerModel->registerUserUsingFacebook($me); //Tady právě potřebuji, aby $me obsahoval taky email, křestní jméno, příjmení apod... Jak je možné, že neobsahuje?
                }

                $user = $this->registerModel->getUser($fb->getUser());

                $this->user->login(new \Nette\Security\Identity($user->id, $user->roles, $user));

            } catch (\Kdyby\Facebook\FacebookApiException $e) {
                \Tracy\Debugger::log($e, 'facebook');
                $this->flashMessage("Sorry bro, facebook authentication failed hard.");
            }

Editoval HonDem (4. 8. 2015 13:03)

Unlink
Člen | 298
+
+1
-

Vo verzii 2.4 je nutné aj vymenovať čo chceš, defaultne to dáva len id a meno

/me?fields=id,name,email

Felix
Nette Core | 1190
+
0
-

Celkove me prijde, ze to API nejak zhorsili. Resp. chce to vyplnovat u aplikace vice a vice udaju. :-)

luke82
Člen | 12
+
+1
-

Nejspíš už máš vyřešeno (jsou to 2 měsíce), ale třeba pomůže ostatním.

Řádek:

$me = $fb->api('/me');

nahradit:

$me = $fb->api('/me', NULL, ['fields' => ['id','first_name','last_name','picture','email']]);

a mělo by to vrátit i email.