2011-05-30 93 views
3

我做了一個Facebook應用,當從apps.facebook.com/myapp打開完全指向我的域的index.php,並可以在Facebook應用窗口中看到,但是當我嘗試將它重定向到我的註冊頁面時發生問題,它被重定向到我的域名,我希望所有頁面都可以在Facebook應用程序窗口中查看。試圖使用fb:redirect sdk函數,但網站表示他們將不贊成使用這些代碼。Facebook應用重定向

<?php 
if(preg_match('/apps.facebook.com/',$_SERVER[HTTP_REFERER])){ 
    $app_id = ''; 
    $api_key = ''; 
    $app_secret = ''; 
    $canvas_page = 'mydomain/index.php'; 
    $auth_url = "http://www.facebook.com/dialog/oauth?client_id=". 
    $app_id."&redirect_uri=".urlencode($canvas_page)."&scope=email,user_birthday,user_interests,user_about_me"; 
    $signed_request = $_REQUEST["signed_request"]; 
    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
    $data = json_decode(base64_decode(strtr($payload,'-_', '+/')), true); 
    if (empty($data["user_id"])){ 
     echo("<script> top.location.href='".$auth_url ."'</script>"); 
    }else{ 
     $canvas_page="mydomain/register.php"; 
     echo ("<script> top.location.href='".$auth_url."'</script>"); 
    } 
}else{ 
    echo "No facebook"; 
} 
?> 

代碼工作完美截至echo("<script> top.location.href='" .$auth_url ."'</script>")$canvas_page是Facebook應用程序開發的形式一組;但當$canvas_page更改爲我的register.php頁面時,會被重定向到其他頁面。我哪裏錯了?

在此先感謝

+0

你的意思是window.location = $ auth_url而不是 2011-05-30 10:45:09

回答

5
<?php 
    //facebook application 
    //set facebook application id, secret key and api key here 
    $fbconfig['appid' ] = "123456392899383"; 
    $fbconfig['api' ] = "97eb2asdfasdf3f20d4421b0fe8c1b2"; 
    $fbconfig['secret'] = "5c1d4asdfasdf71b59806b69c386b2ca"; 

    //set application urls here 
    $fbconfig['baseUrl'] = "http://www.your-url.com/"; 
    $fbconfig['appBaseUrl'] = "http://apps.facebook.com/appname/"; 

    $uid   = null; //facebook user id 

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

    //Facebook Authentication part 
    $session = $facebook->getSession(); 
    $loginUrl = $facebook->getLoginUrl(
      array(
      'canvas' => 1, 
      'fbconnect' => 0, 
      'req_perms' => 'email,publish_stream,status_update,user_birthday,user_location,user_work_history' 
      ) 
    ); 

    $fbme = null; 

    if (!$session) { 
     echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; 
     exit; 
    } 
    else { 
     try { 
      $uid  = $facebook->getUser(); 
      $me  = $facebook->api('/me'); 
      //PUT THE APPLICATION CODE HERE> 
     } catch (FacebookApiException $e) { 
      echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; 
      exit; 
     } 
    } 

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

您可以使用此腳本正確授權應用程序定期使用它。

+1

他們是你真正的API祕訣嗎? – dynamic 2011-05-30 17:49:56

+0

NOPE。 :P爲什麼我會提供我真正的祕密? – 2011-05-30 17:51:53

+0

意外....... – dynamic 2011-05-30 17:56:44

0

您$ auth_url不會改變:

$canvas_page="mydomain/register.php"; 
echo ("<script> top.location.href='".$auth_url."'</script>"); 

$驗證網址尚處於頂部 $ canvas_page = 'MYDOMAIN/index.php文件' 中定義的URL;

-4

這與facebook無關。這是ABC PHP PHP!

<?php 
$a = "John"; 
$b = "Hello " . $a; 
$a = "Bob"; 
print $b; // returns: Hello John 
$b = "\nHello " . $a; 
print $b; // returns: Hello Bob 
?> 

example