есть ли правильная библиотека codeigniter для работы с Facebook php sdk - PullRequest
1 голос
/ 18 декабря 2010

Я искал в Google Библиотеки для Facebook, и нашел это: http://www.haughin.com/code/facebook/, но это кажется немного устаревшим. Я хотел что-то для этого: https://github.com/facebook/php-sdk/

Между тем я написал свою собственную обертку, но, похоже, у меня есть некоторые проблемы с $_REQUEST['...']

Ответы [ 4 ]

2 голосов
/ 01 августа 2011

Вы можете легко использовать Официальный PHP Facebook SDK в Codeigniter.Единственная проблема - Facebook SDK нужен $ _REGISTER, а в Codeigniter его нет. (Из-за mod_rewrite)

Вот небольшое решение:

1 - это для $ _REGISTERпроблема.Используйте эту перед загрузкой класса Facebook:

parse_str( $_SERVER['QUERY_STRING'], $_REQUEST );

2 - Facebook SDK содержит 2 файла.Поместите их в один файл и сохраните в папке приложения / помощника как facebook_helper.php .Тогда загрузка и использование так просты:

$this->load->helper( 'facebook' );
$facebook = new Facebook( array( 'appId' => 'XXX', 'secret' => 'xxx' ) );
// ... The rest is not different. You can read Facebook SDK examples
1 голос
/ 07 июня 2011

Вы можете сделать это понятным способом, написав небольшую библиотеку, унаследовав класс Facebook SDK. Пожалуйста, следуйте моему сообщению на http://www.betterhelpworld.com/codeigniter/how-to-use-facebook-php-sdk-v-3-0-0-with-codeigniter, чтобы оно заработало.

1 голос
/ 22 июня 2011

Существует также Facebook-Ignited .

1 голос
/ 19 декабря 2010

Итак, вот трюк, который я использовал, чтобы использовать Facebook PHP SDK с моим приложением CodeIgniter. Из кода SDK возьмите Facebook.php, выньте класс FacebookApiException и поместите его в новый файл с именем FacebookApiException.php. Теперь я поместил facebook.php и FacebookApiException.php в папку моделей и использовал их как обычные модели.

Вот код, который я использовал для аутентификации пользователей и предоставления доступа к приложению через Facebook.

function facebook_login(){
        # Creating the facebook object
        $facebook = new Facebook(array(
            'appId'  => 'XXXXXXXXXXXXXXXXX',
            'secret' => 'XXXXXXXXXXXXXXXXX',
            'cookie' => true
        ));

        # Let's see if we have an active session
        $session = $facebook->getSession();

        if(!empty($session)) {
            # Active session, let's try getting the user info
            try{
                $uid = $facebook->getUser();
                $param  =   array(
                   'method'  => 'users.getinfo',
                   'uids'       => $uid,
                   'fields'     => 'uid, username, name, profile_url, pic_big',
                   'callback'  => ''
                );
                $user = $facebook->api($param);
            } catch (Exception $e){
                $url = $facebook->getLoginUrl(array(  
                         'req_perms' => 'user_about_me, email, status_update, publish_stream, user_photos',
                         'next' =>  site_url()  . 'user/facebook_login',
                         'cancel' => site_url()
                     ));
                redirect($url);
            }

            if(!empty($user)){
                # User info ok? 
                print_r($user);

                    // Add user oauth token and info to DB, and then redirect to some controller in your application.
                    redirect('/'); // redirect to homepage

            } else {
                # For testing purposes, if there was an error, let's kill the script
                die("There was an error.");
            }
        } else {
            # There's no active session, let's generate one
            $url = $facebook->getLoginUrl(array(  
                         'req_perms' => 'user_about_me,email,status_update,publish_stream,user_photos',
                         'next' =>  site_url()  . 'user/facebook_login',
                         'cancel' => site_url()
                     ));
            redirect($url);
        }
    }

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...