2012-03-24 105 views
1

我正在整合Facebook連接在我的網站使用PHP SDK ..一切工作正常,除非我想,而不是重定向到Facebook身份驗證,我想打開OAuth對話框..目前Im使用以下URL驗證..它重定向至Facebook,但不開放的OAuth Dailog ..在Facebook的PHP SDK中打開身份驗證對話框

https://www.facebook.com/dialog/oauth?client_id=XXXXXXXXXXX&redirect_uri=http%3A%2F%2Fwww.setsail2nz.com.au%2Fmicrosite%2Ffbalbums.php%3Fpid%3D1&state=ad89eddd7f71e7337785f604710c97e8&scope=user_photos%2Cpublish_stream%2Cmanage_friendlists%2Cemail&display=popup

任何想法?

編輯: 我知道如何做到這一點與Facebook的JS SDK ..但有沒有辦法做到這一點與PHP?

編輯2:好了,現在即時通訊使用JS SDK,但仍然它不是打開對話框。這裏是我的代碼

<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
    appId  : 'XXXXXXXXXX', // App ID 
    status  : true, // check login status 
    cookie  : true, // enable cookies to allow the server to access the session 
    xfbml  : true, // parse XFBML 
    oauth : true // enables OAuth 2.0 
    }); 
    }; 

    // Load the SDK Asynchronously 
    (function(d){ 
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    ref.parentNode.insertBefore(js, ref); 
    }(document)); 

    function fblogin() 
    { 
    FB.login(function(response) 
    { 
     alert(response); 

    },{perms: "user_photos,publish_stream,manage_friendlists,email"}); 
    } 
</script> 
+0

您可以使用JS-SDK這一點。 – 2012-03-24 13:26:53

+0

是的,我知道的JavaScript ..但有沒有辦法用PHP Sdk做到這一點? – casper123 2012-03-24 14:30:30

回答

0

要回答你的問題有關檢測與PHP SDK中的對話響應:

的概率lem是getloginURL只接受一個成功或錯誤使用的URL參數。我需要檢測用戶是否在權限對話框上單擊了「確定」或「取消」,以便我可以重定向到預先權限對話框頁面,或顯示正確的登錄內容。

我所做的只是檢查是否「ERROR_REASON」的網址參數中存在,如果錯誤是「user_denied」,並採取適當的行動。可能有更好的辦法,但這對我有用。

<?php 
    //Facebook Authentication 
    $user = $facebook->getUser(); 

    //Get Login URL 
    $loginUrl = $facebook->getLoginUrl(); 

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

    //User is not logged in 
    if (!$user) { 
     //Check if error_reason was generated and if the user denied login 
     if (isset($_REQUEST['error_reason']) && ($_REQUEST['error_reason']=='user_denied')) { 
      //user cancelled permissions dialog thus not logged in to app, redirect elsewhere 
      echo "<script type='text/javascript'>top.location.href = 'YOUR REDIRECT URL';</script>"; 
      exit; 
     } else { 
      //user not logged in so initiate permissions dialog 
      echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; 
      exit; 
     } 
    } 

    //get user basic description 
    $userInfo = $facebook->api("/$user"); 
?>