是否有正确的codeigniter库与Facebook php sdk一起使用

时间:2010-12-18 14:48:07

标签: php facebook codeigniter

我在Google搜索了Facebook的图书馆,并找到了这个:http://www.haughin.com/code/facebook/, 但它似乎有点过时了。 我想要这个东西:https://github.com/facebook/php-sdk/

我已经为它编写了自己的包装器,但似乎我遇到了$_REQUEST['...']

的一些问题

4 个答案:

答案 0 :(得分:2)

您可以轻松地在Codeigniter中使用官方PHP Facebook SDK。唯一的问题是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 :(得分:1)

所以这是我曾经使用我的CodeIgniter应用程序使用facebook PHP sdk的技巧。从SDK代码中,取Facebook.php并取出FacebookApiException类,并将其放在名为FacebookApiException.php的新文件中。现在,我将facebook.php和FacebookApiException.php放入models文件夹中,并将它们用作常规模型。

以下是我用于验证用户身份并通过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);
        }
    }

希望这有帮助。

答案 2 :(得分:1)

您可以通过继承Facebook SDK类编写一个小型库来以清晰的方式处理它。请按照http://www.betterhelpworld.com/codeigniter/how-to-use-facebook-php-sdk-v-3-0-0-with-codeigniter上的帖子进行操作。

答案 3 :(得分:1)

还有Facebook-Ignited