Проблема с OAuth на Facebook с CakePHP 2.9

Привет, ребята, прежде всего позвольте мне сказать вам, ребята, что я новичок в CakePHP и MVC, но один из моих старых клиентов попросил меня об одолжении, которое я принял за вызов. Так что если кто-нибудь может мне помочь, я буду очень признателен.

У меня есть приложение CakePHP 2.9, где OAuth не работает должным образом, следующий код для app/Controller/UsersController.php

 public function facebookLogin(){

    $this->layout = false;

    App::import('Vendor', 'Facebook/facebook');
    /*$facebook = new Facebook(array(
                                  'appId'  => '1867587306812489',   // Facebook App ID 
                                  'secret' => '9fb41a07d3da3406dbab5861c3498764',  // Facebook App Secret
                                  'cookie' => false,    
                                  )
                            );   */ 
    $facebook = new Facebook(array(
                                  'appId'  => '1887387108164606',   // Facebook App ID 
                                  'secret' => '8d733aa6a4501ce27fde9626429baab9',  // Facebook App Secret
                                  'cookie' => false,    
                                  )
                            );  
    $user = $facebook->getUser();
    if ($user) {
         try {
                $user_profile = $facebook->api('/me?fields=first_name,last_name,email');

        $usersArr = $this->User->find('first',array('conditions'=>array('User.email'=>$user_profile['email'],'User.social_id'=>$user_profile['id'],'User.role_id'=>0)));


                                      $user_count = $this->User->find('first',array('conditions'=>array(),'order'=>'User.id DESC','limit'=>1));

                if(empty($usersArr)){

                        $saveUserArr['User']['username'] =  trim($user_profile['first_name']).' '.trim($user_profile['last_name']);
                        $saveUserArr['User']['firstname'] =  $user_profile['first_name'];

                        $saveUserArr['User']['lastname'] =   $user_profile['last_name'];

                                                   /* $user_n = $saveUserArr['User']['first_name'].'.'.$saveUserArr['User']['last_name'];
                        $user_cnt = $user_count['User']['id'] + 1;
                        $user_n = str_replace(' ','_',$user_n).'.'.$user_cnt;
                        $saveUserArr['User']['user_unique_id'] = $user_n;  */

                        $saveUserArr['User']['email'] =      $user_profile['email'];

                        $saveUserArr['User']['password'] =   '123456';

                        $saveUserArr['User']['social_id'] =  $user_profile['id'];

                        $saveUserArr['User']['login_from'] =  'facebook';

                        $saveUserArr['User']['role_id'] =  0;

                        $this->User->save($saveUserArr['User'],false);

                }else{

                    $this->User->id = $usersArr['User']['id'];

                    $this->User->saveField('social_id', $user_profile['id']);

                    $this->User->saveField('login_from', 'facebook');

                }

            $this->request->data['User']['email'] =  $user_profile['email'];

            $this->request->data['User']['login_from'] =  'facebook';       

          } catch (FacebookApiException $e) {

             error_log($e);

             $user = null;

          }

    } else {

     $loginUrl = $facebook->getLoginUrl(array(

            'scope'     => 'email', // Permissions to request from the user

            ));

     return $this->redirect($loginUrl);
    }                       
}

private function deleteFacebookSession(){

    Configure::write('debug', 0);   

    if(!$this->Session->check('Auth.User')){

        foreach( $this->Session->read() as $key => $value ) {

            if( strpos( $key, 'fb_' ) === 0 ) {

                $this->Session->delete($key);

            }
        }
    }
}

Выдает следующую ошибку:

1 ответ

URL-адрес oauth-скрипта неправильно настроен в вашем приложении fb. Вы можете зайти в настройки вашего приложения fb и найти APP DOMAIN.

Включите там свой домен:

ввод домена приложения Facebook

Если вы разрабатываете на своем локальном хосте, вы можете захотеть создать запись server.local в вашем файле hosts, чтобы вы могли получить доступ к своему локальному серверу как server.local.

Кроме того, вы можете создавать тестовые версии основного приложения fb, и позволяет вам иметь копию вашего приложения fb, которая работает в других средах, она называется "создать тестовое приложение".

Facebook создать диалог тестового приложения

Другие вопросы по тегам