0


私はアプリケーションの FB id 機能を使用してログインに取り組んでおり、GITHUB (facebook-php-sdk-master) から FB 接続用の SDK をダウンロードすることから始めました。

アプリケーション内には、1) Javascript API 用と 2) PHP API 用の 2 つの例があります。PHP SDK を使用して、ユーザーの Web サイトの JavaScript 無効化機能を無視したいと考えています。
今、私は自分のアプリケーションを入力しました

    $facebook = new Facebook(array(
      'appId'  => 'deliberately blank',
      'secret' => '',
    ));

Facebookにログインして、機能しているかどうかを確認すると、ユーザーがログインしても常に0
が返されます。ユーザー変数を印刷しようとしました

   $user = $facebook->getUser();
   print_r($user); 

アプリの設定を確認したところ、ドメイン、URL、およびキャンバス URL が正しく設定されています。サンドボックス モードも無効にしました。
セッションがキャプチャされないため、これはプラグインの問題ですか、それともここで何か間違ったことをしていますか?
同様の問題に取り組んだり、直面したりした人は、私が立ち往生していて、セッションデータを使用して印刷しようとしたため、洞察を共有してください。$_SESSIONこれは、配列を返します

Array ( [fb_117096311791424_state] => 5faba08750cd6456hbf27580df3b371 ) 

しかし、私はユーザー情報を取得しません.それを達成する他の方法はありますか?代替APIなどはありますか?

コードの更新:

define('HTTP_SERVER', "http://".$_SERVER["HTTP_HOST"]); // eg, http://localhost - should not be empty for productive servers
define('HTTPS_SERVER', ''); // eg, https://localhost - should not be empty for productive servers
define('BASE_URL', HTTP_SERVER.'/'); // eg, https://localhost - should not be empty for productive servers

if(HTTP_SERVER == 'http://localhost'){
    define('DOCUMENT_SERVER', $_SERVER['DOCUMENT_ROOT'].'/XYZ/');
}else{
    define('DOCUMENT_SERVER', $_SERVER['DOCUMENT_ROOT'].'/'); 
}
require(DOCUMENT_SERVER.'includes/applicationTop.php');
$dataObj = new Database();
$generalObj = new General();

file_get_contents('http://www.ABC.com/login/facebookConnect/fbmain.php');
//require_once('http://www.ABC.com/login/facebookConnect/fbmain.php');

/**
* check if user login first time or second time with facebook, records stored in table and session.
**/

if (!empty($user))
{
$firstName = $userInfo['first_name'];
$lastName = $userInfo['last_name'];
$userName = $userInfo['username'];
$gender = $userInfo['gender'];
$email = $userInfo['email'];
$birthday = $userInfo['birthday'];

$userImage = $fqlResult[0]['pic_square'];
$addressName = $fqlResult[0]['hometown_location']['name'];
$addressCity = $fqlResult[0]['hometown_location']['city'];
$addressState = $fqlResult[0]['hometown_location']['state'];
$addressCountry = $fqlResult[0]['hometown_location']['country'];
$addressZip = $fqlResult[0]['hometown_location']['zip'];

$ip = $_SERVER['REMOTE_ADDR'];
$date = date('Y-m-d');

$accountId = strtolower($generalObj->fnCreatePassword(8));


/**
* check user first time login or not with facebook login.
**/

$queryUser = "SELECT tbl_login.userId,tbl_login.accountId,tbl_login.emailId FROM tbl_login WHERE tbl_login.emailId='$email'";
$resultUser = $dataObj->tep_db_query($queryUser);
$userInfo = $dataObj->getRecord($resultUser);
$checkUser = $dataObj->getNumRows($queryUser);

if($checkUser == '0' || $checkUser == '')
{
    /**
    * if user first time login with facebook then records are inserted into table.
    **/
    $qyery = "INSERT INTO ".TABLE_LOGIN." (accountId, emailId,activeFlag,facebook_Userid) VALUES('$accountId','$email','1','$username')";
    $data = $dataObj->tep_db_query($qyery);
    $userID = $dataObj->tep_db_insert_id();
    if(!empty($userID))
    {   
        $sql = "INSERT INTO ".TABLE_USER_INFO." (userId,fName,lName,address,city,country,state,postalCode,emailId,user_dob,profile_Image,user_ip,user_date,activeFlag) VALUES('$userID','$firstName','$lastName','$addressName','$addressCity','$addressCountry','$addressState','$addressZip','$email','$birthday','$userImage','$ip','$date','1')";
        $data = $dataObj->tep_db_query($sql);
    }
    //$_SESSION["gobiggiuserFaceBook"] = true;
    $_SESSION["UserId"] = $userID;
    $_SESSION["username"] = $accountId;
    $_SESSION["emailId"] = $email;
    $_SESSION["ProfileImage"] = $userImage;

}
else
{
    /**
    * updated user's info incase user has been updated own profile's records on facebook.
    **/
    //QUery for update

    /**
    * If user have already login with facebook then records are taking into session
    **/

    $_SESSION["UserId"] = $userInfo['userId'];
    $_SESSION["username"] = $userInfo['accountId'];
    $_SESSION["emailId"] = $userInfo['emailId'];
    $_SESSION["ProfileImage"] = $userImage['profile_Image'];    

}

$sessionUserid = (!empty($_SESSION["UserId"])) ? $_SESSION["UserId"] : '' ; 

if(!empty($sessionUserid)){
    echo "herererere in dashboard part";
    //exit;
    header("Location:".USER_DASHBOARD."userDashboard.php");
    exit();
    //$generalObj->tep_redirect(FILE_PATH.'userDashboard.php');
}else{
    echo "herererere in login part";
    exit;
    header("Location:".LOGIN."login.php");
    exit();
    //$generalObj->tep_redirect(FILE_PATH.'login.php');
}
}
else
{
    //echo LOGIN.USER_DASHBOARD;
    //exit();
    /*I always end up here*/
    header("Location:".LOGIN."login.php");
    exit();
    //$generalObj->tep_redirect(FILE_PATH.'login.php');
}

これはfbmain.php

$fbconfig['appid' ]     = "deliberately blank";
$fbconfig['secret']     = " ";
$fbconfig['baseurl']    = "http://www.ABC.com/login/facebookConnect/facebookHome.php"; 


if (isset($_GET['request_ids'])){
    //user comes from invitation
    //track them if you need
}

$user            =   null; //facebook user uid
try{

    require_once "facebook.php";
}
catch(Exception $o){
    error_log($o);
}
// Create our Application instance.
$facebook = new Facebook(array(
  'appId'  => $fbconfig['appid'],
  'secret' => $fbconfig['secret'],
  'cookie' => true,
));

//Facebook Authentication part
$user       = $facebook->getUser();
// We may or may not have this data based 
// on whether the user is logged in.
// If we have a $user id here, it means we know 
// the user is logged into
// Facebook, but we don’t know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.
//print_r($user);
//exit;
$loginUrl   = $facebook->getLoginUrl(
        array(
            'scope'         => 'email,offline_access,publish_stream,user_birthday,user_location,user_work_history,user_about_me,user_hometown',
            'redirect_uri'  => $fbconfig['baseurl']
        )
);

$logoutUrl  = $facebook->getLogoutUrl();

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    //you should use error_log($e); instead of printing the info on browser
    d($e);  // d is a debug function defined at the end of this file
    $user = null;
  }
}


//if user is logged in and session is valid.
if ($user){
    //get user basic description
    $userInfo           = $facebook->api("/$user");
   // print_r($userInfo);
    //Retriving movies those are user like using graph api
    try{
        $movies = $facebook->api("/$user/movies");
    }
    catch(Exception $o){
        d($o);
    }

    //update user's status using graph api
    //http://developers.facebook.com/docs/reference/dialogs/feed/
    if (isset($_GET['publish'])){
        try {
            $publishStream = $facebook->api("/$user/feed", 'post', array(
                'message' => "", 
                'link'    => '',
                'picture' => '',
                'name'    => '',
                'description'=> ''
                )
            );
            //as $_GET['publish'] is set so remove it by redirecting user to the base url 
        } catch (FacebookApiException $e) {
            d($e);
        }
        //echo "login successs!!!";exit;
        $redirectUrl     = $fbconfig['baseurl'] . '/login.php?success=1';
        header("Location: $redirectUrl");
    }

    //update user's status using graph api
    //http://developers.facebook.com/docs/reference/dialogs/feed/
    if (isset($_POST['tt'])){
        try {
            $statusUpdate = $facebook->api("/$user/feed", 'post', array('message'=> $_POST['tt']));
        } catch (FacebookApiException $e) {
            d($e);
        }
    }

    //fql query example using legacy method call and passing parameter
    try{
        $fql    =   "select name, hometown_location, sex, pic_square from user where uid=" . $user;
        $param  =   array(
            'method'    => 'fql.query',
            'query'     => $fql,
            'callback'  => ''
        );
        $fqlResult   =   $facebook->api($param);
    }
    catch(Exception $o){
        d($o);
    }
}

function d($d){
    //echo '<pre>';
    //print_r($d);
    //echo '</pre>';
}

他のファイルは SDK 自体からのものです。

よろしく

4

1 に答える 1

1

1 . 2に変更file_get_contents('file_path');します。初回のユーザーをチェックしているelse条件では、使用しましたrequire_once('file_path');

$_SESSION["UserId"] = $userInfo['userId'];
$_SESSION["username"] = $userInfo['accountId'];
$_SESSION["emailId"] = $userInfo['emailId'];
$_SESSION["ProfileImage"] = $userImage['profile_Image']; 


これらの値はすべて間違っています。つまり、使用されているインデックス$userInfoが間違っています! 代わりに次のように使用します。

$_SESSION["UserId"] = $userInfo['id']; //or $user
$_SESSION["username"] = $userInfo['username']; 
$_SESSION["emailId"] = $userInfo['email'];
$_SESSION["ProfileImage"] = $userImage; //not $userImage['profile_Image']


この 2 つの変更だけで完了です。

于 2013-05-13T13:41:27.560 に答える