2012-11-11 1 views
0

다음 코드를 사용하여 내 웹 사이트의 독점 콘텐츠를 볼 수 있도록 내 페이스 북 앱 사용자 세부 정보를 mysql에 저장하고 있습니다. 나중에 그것을 사용하는 내 MySQL의 테이블에 사용자의 액세스 토큰을 저장할 수있는 방법 나의 질문은 간단하다Mysql에 페이스 북 액세스 토큰을 저장하여 나중에 벽에 게시하십시오.

는 이해가 안 나중에

<?php 
session_start(); 
if(isset($_POST["connect"]) && $_POST["connect"]==1) 
{  
include_once("config.php"); //Include configuration file. 

//Call Facebook API 
if (!class_exists('FacebookApiException')) { 
require_once('inc/facebook.php'); 
} 
    $facebook = new Facebook(array(
    'appId' => $appId, 
    'secret' => $appSecret, 
)); 

$fbuser = $facebook->getUser(); 
if ($fbuser) { 
    try { 
     // Proceed knowing you have a logged in user who's authenticated. 
     $me = $facebook->api('/me'); //user 
     $uid = $facebook->getUser(); 
    } 
    catch (FacebookApiException $e) 
    { 
     //echo error_log($e); 
     $fbuser = null; 
    } 
} 





// redirect user to facebook login page if empty data or fresh login requires 
if (!$fbuser){ 
    $loginUrl = $facebook->getLoginUrl(array('redirect_uri'=>$return_url, false)); 
    header('Location: '.$loginUrl); 
} 

//user details 
$fullname = $me['first_name'].' '.$me['last_name']; 
$email = $me['email']; 
$username = $me['username']; 
$gender = $me['gender']; 
$locale = $me['locale']; 
$token = $me['token']; 

/* connect to mysql */ 
$connecDB = mysql_connect($hostname, $db_username, $db_password)or die("Unable to connect to MySQL"); 
mysql_select_db($db_name,$connecDB); 

//Check user id in our database 
$result = mysql_query("SELECT COUNT(id) FROM usertable WHERE fbid=$uid"); 
$UserCount = mysql_fetch_array($result); 

if($UserCount[0]) 
{ 
    //User exist, Show welcome back message 
echo 'Ajax Response :<br /><strong>Welcome back '. $me['first_name'] . ' '. $me['last_name'].'!</strong> AT : '.$token.' (Facebook ID : '.$uid.') [<a href="'.$return_url.'?logout=1">Log Ouuuuuuuuuuuuuut</a>]'; 
echo '<iframe style="width:1309px; height:526px" src="post2.php"></iframe>'; 

    //User is now connected, log him in 
    login_user(true,$me['first_name'].' '.$me['last_name']); 
} 
else 
{ 
    //User is new, Show connected message and store info in our Database 
    // Insert user into Database. 
    @mysql_query("INSERT INTO usertable (fbid, fullname, email, username, gender, token, locale) VALUES ($uid, '$fullname','$email','$username','$gender','$token','$locale')"); 

    //User is now connected, log him in 
    login_user(true,$me['first_name'].' '.$me['last_name']); 
} 

mysql_close($connecDB); 
    } 

    function login_user($loggedin,$user_name) 
    { 
/* 
function stores some session variables to imitate user login. 
We will use these session variables to keep user logged in, until s/he clicks log-out link. 
If you are using some authentication library, login user with it instead. 
*/ 
$_SESSION['logged_in']=$loggedin; 
$_SESSION['user_name']=$user_name; 
} 

?> 
+0

오프라인 일 때 사용자의 벽에 게시하려면 'publish_stream' 권한 만 있으면 ** 사용자 액세스 토큰이 필요하지 않습니다. ** PHP-SDK를 직접 사용하십시오. 자동으로 앱 액세스 토큰을 추가하면 제대로 작동합니다. 추신 : 코드에주의가 필요합니다. – ifaour

답변

0

를 벽에 게시합니다. 이미 토큰을 저장하고 있습니다.

필요한 것은 사용자가 로그인 한 경우 인증 된 전용 페이지에서 확인하는 것입니다. 그렇다면 $ _SESSION [ 'user_id'] (예 :)에 대한 토큰을 반환하고 예를 들어 사용하여 해당 토큰 페이스 북 API 내에서 상호 작용 :

$token = $_SESSION['token']; 
$facebook->setAccessToken($token); 

내가 희망 그것은 당신을 도울했다.

+0

오프라인 토큰을 찾고 있습니다. FB에 연결되지 않은 경우에도 사용자의 벽에 메시지를 게시하고 싶습니다. –

+0

그렇게 할 수 있습니다. 또한 액세스 토큰에 허용되도록 publish_stream 권한을 요청해야합니다. 확장 액세스 토큰을 저장하기 전에 (60 일 후에 만료 됨) 확장 토큰을 묻는 것이 좋습니다. $ facebook-> setExtendedAccessToken(); $ fb_access_token = $ facebook-> getAccessToken(); 토큰이 만료되었음을 잊지 마세요! 토큰이 더 이상 유효하지 않고 사용자가 새로 고침해야하는 경우 항상 예외가 필요합니다. config.php 파일의 –

+0

에 'publish_stream, offline_access'권한을 요청했습니다. 내 앱은 사용자의 벽에 메시지를 게시 할 수 있지만 이동 중에도 모든 내 애플리케이션 사용자에게 메시지를 게시 할 수 있기를 원합니다. 이 응용 프로그램과 마찬가지로 http://yougapi.com/products/facebook_viral/admin/ –