Přihlášování před Facebook, rerequest permicí

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

Dobrý den, všude na webu jsem hledal jak se dá udělat s Kdyby/Facebook rerequest, když uživatel nepovolí nějaké permission, našel jsem toto , ale nevím jak to správně využít, nemohl by mi někdo prosím poradit? Všem děkuji za pomoc.

Mám tohle, je to strašně neelegantní, ale vůbec mě nenapadlo, jak to dělat jinak + potřeboval bych potom právě tím redirect zavolat znovu ten dialog, aby ale vyskočilo FB okénko.

/** @return LoginDialog */
    protected function createComponentFbLogin()
    {

        $dialog = $this->facebook->createDialog('login');
        /** @var LoginDialog $dialog */

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

            if (!$fb->getUser()) {
                $this->flashMessage("Sorry, Facebook authentication failed.");
                return;
            }


            try {

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


                $p_email = FALSE;
                $p_public_profile = FALSE;
                $p_user_friends = FALSE;

                for ($i=0; $i < count($p); $i++) {
                    if($p[$i]['permission'] == "email" && $p[$i]['status'] == "granted")
                    {
                        $p_email = TRUE;
                    }

                    if($p[$i]['permission'] == "public_profile" && $p[$i]['status'] == "granted")
                    {
                        $p_public_profile = TRUE;
                    }

                    if($p[$i]['permission'] == "user_friends" && $p[$i]['status'] == "granted")
                    {
                        $p_user_friends = TRUE;
                    }
                }


                if($p_email != TRUE || $p_public_profile != TRUE || $p_user_friends != TRUE)
                {
                    $this->flashMessage("Sorry, Facebook authentication failed.");
                    $this->redirect('this', array('do' => 'fbLogin-open'));
                }
				...

Ještě jednou děkuji. :)

resigo
Člen | 20
+
0
-

Tak jsem to vyřešil tím

$loginUrl = $dialog->getUrl(
            $dialog::DISPLAY_PAGE // Or what do you need...
        );

a poté redirect

$this->redirectUrl($loginUrl."&auth_type=rerequest");