2011-11-16 3 views
3

내 앱을 인증 한 후 사용자를 내 페이지 탭으로 다시 리디렉션하는 방법은 무엇입니까? 내 애플 리케이션이 여러 페이지에 살고 있기 때문에 리디렉션에 대한 하나의 특정 URL을 넣을 수 없습니다. 그래서 어떻게 든 페이지의 ID를 집어 URL에 넣어야합니다. 나는 세션 변수를 사용하려고 시도했지만 그것은 나를 위해 작동하지 않는 것 같습니다. :(여기에 내가 페이지의 ID를 잡아 세션 변수를 설정하기 위해 노력하고있어 볼 수 있듯이사용자가 인증 한 후 페이지 탭으로 다시 리디렉션 하시겠습니까?

$signed_request = $facebook->getSignedRequest(); 

$_SESSION['TrueID'] = $signed_request['page']['id']; 

$fbconfig['appBaseUrl'] = "http://www.facebook.com/pages/".$_SESSION['TrueID']."/".$_SESSION['TrueID']."?sk=app_241321439259320"; 

/* 
* If user first time authenticated the application facebook 
* redirects user to baseUrl, so I checked if any code passed 
* then redirect him to the application url 
* -mahmud 
*/ 
if (isset($_GET['code'])){ 
    header("Location: " . $fbconfig['appBaseUrl']); 
    exit; 
} 
//~~ 

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

... 내 코드의 일부입니다 ..하지만 나를 위해 작동하지 않습니다 그 :(변수 에코의 밖으로 내 페이지를 방문 ..하지만 난 인증시 어딘가에 길을 잃지는 추측하고있을 때.

+0

좋아 .. ..이 완전히 말도 할 수 있지만 대신 다른 페이지로 리디렉션으로 다시 2 페이지를 브라우저를 보낼 것입니다이 자바 스크립트를 삽입하여 작동있어 그것은 작동하지만 .. 내가 이렇게해야합니까? – Dustin

답변

3

그냥 그래서 페이지를 추가 할 때/당신의 응용 프로그램을 설치, 당신은 페이지의 link 페이지의 id.

와 함께 잘 보관해야

이제 페이지 탭이로드되면 Facebook에서 page 매개 변수를 보내면 012 페이지가 포함됩니다.(다른 정보와 함께 documentation 참조) ($page 페이지의 DB를 기록 임) 당신은, 그 ID를 검색하여 DB에서 페이지의 링크를 얻을 같은 것 페이지 탭 링크를 구축 :

$redirect_uri = $page['page_link'] . '?sk=app_' . $APP_ID 

당신이 PHP-SDK를 사용하고 있기 때문에,

<a href="<?php echo $url;?>" target="_top">Connect</a> 
+0

어떻게'$ page [ 'page_link']'가 나옵니까? – Dustin

+0

그래프 API ([참조] (http://developers.facebook.com/docs/reference/api/page/#tabs))를 통해 앱을 설치하는 경우 이미 쿼리 한 'page_id'를 알고 있습니다. 이드는 그래프를 통해 데이터를 얻습니다. 그렇지 않으면 새로운 페이지 ('signed_request'에 의해 캡쳐 된)를 발견하면 정보를 검색하고 DB에 추가하십시오. – ifaour

2

: 대신 직접 로그인 리디렉션하지만 싶지 않을 수도 물론

$user = $facebook->getUser(); 
if(!$user) { 
    $url = $facebook->getLoginUrl(array('redirect_uri' => $redirect_uri, 'scope' => 'read_stream')); 
    echo "<script>top.location.href = '$url';</script>"; 
    exit; 
} 

행동 링크에 대한 호출이 : 이것은 당신이 로그인을 구성하는 방법입니다 내가 찾은 가장 좋은 방법은

다음이 같은 (테스트) 할 http://www.facebook.com/pages/에 응용 프로그램 설정에서 사이트의 URL을 설정하는 것입니다 :

$uid = ''; 

$facebook = new Facebook(array(
     'appId' =>'xxxxxxxxxxxxxxx', 
     'secret' =>'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 
     'cookie' => true, 
    'oauth' => true, 
     )); 

$uid = $facebook->getUser(); 

$signedrequest = $facebook->getSignedRequest(); 

$page_id = $signedrequest["page"]["id"]; 

$fb_access_token = $signedrequest["oauth_token"]; 

if($uid==''){ 
echo '<div id="authenticate"><a href="https://www.facebook.com/dialog/oauth/?client_id=APP_CLIENT_ID_HERE&redirect_uri=http://www.facebook.com/pages/'. $page_id .'/'.$page_id.'%3Fsk%3Dapp_APP_CLIENT_ID_HERE&response_type=token" target="_top">Authorize App</a></div>'; 

이것은 해킹의 약간있을 수 있습니다,하지만 그것은 잘 작동 내 상황 :) 희망이 누군가를 돕는다!

관련 문제