2011-11-16 80 views
3

我應該如何在用戶驗證我的應用程序後將用戶重定向到我的頁面的選項卡?我無法爲重定向添加一個特定的網址,因爲我的應用將存在多個網頁中。所以不知何故,我需要抓住頁面的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 
} 

正如你可以看到我正在嘗試設置一個會話變量來獲取頁面的ID ..但是這不是爲我工作:(變量回聲的出就好當我訪問我的網頁...但我猜它在認證過程中取得了一些丟失。

+0

好吧..這可能是完全荒謬的,但我把它插入這個JavaScript將在瀏覽器發回2頁而不是重定向到另一個頁面,以工作.. 它的工作原理..但我應該這樣做嗎? – Dustin

回答

3

因此,當一個頁面添加/安裝應用程式,您應該存儲頁面的link隨着頁面的id

現在,當您的頁面標籤被加載時,Facebook將發送page參數,其中將包含頁面id(以及其他信息,請參閱documentation)。您檢索ID,從數據庫獲取頁面的鏈接,並構建你的頁面的選項卡鏈接,這將是這樣的(其中$page是頁面的數據庫記錄):

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

由於您使用的是PHP-SDK,這是你如何構建你的登錄:

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

當然,你可能不希望直接重定向到登錄,而是要行動鏈接的電話:

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

你如何得到'$ page ['page_link']'? – Dustin

+0

如果您是通過圖形api([reference](http://developers.facebook.com/docs/reference/api/page/#tabs))安裝應用程序,那麼您已經知道您剛剛查詢到的'page_id'通過圖表編號獲取數據。否則,如果您遇到一個新頁面(由'signed_request'捕獲),只需檢索其信息並將其添加到您的數據庫中......等等 – ifaour

2

我發現最好的辦法是在應用程序設置來設置網站的URL http://www.facebook.com/pages/

然後做這樣的事情(測試):

$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>'; 

這可能是一個黑客的一點點,但它運作良好爲我的情況:)希望它可以幫助別人!

相關問題