簡體   English   中英

是否有適當的codeigniter庫與facebook php sdk一起使用

[英]is there proper codeigniter library to work with facebook php sdk

我已經在Google上搜索了Facebook庫,並找到了這個庫: http : //www.haughin.com/code/facebook/ ,但是似乎有些過時了。 我想要這個東西: https : //github.com/facebook/php-sdk/

同時,我為此編寫了自己的包裝器,但是好像我在$_REQUEST['...']遇到了一些問題

您可以在Codeigniter中輕松使用Official 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保存到您的application / helper文件夾中。 然后加載和使用是這樣的輕松:

$this->load->helper( 'facebook' );
$facebook = new Facebook( array( 'appId' => 'XXX', 'secret' => 'xxx' ) );
// ... The rest is not different. You can read Facebook SDK examples

因此,這是我過去在我的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);
        }
    }

希望這可以幫助。

您可以通過繼承Facebook SDK類編寫一個小型庫來以清晰的方式處理它。 請按照我在http://www.betterhelpworld.com/codeigniter/how-to-use-facebook-php-sdk-v-3-0-0-with-codeigniter上的文章進行操作。

還有Facebook-Ignited

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM