2012-03-24 8 views
1

私は統合されています。私はphp SDKを使って自分のウェブサイトに接続しています..すべてがうまく動いていますが、認証のためにフェイスブックにリダイレクトする代わりにOAuth Dialogを開きたいです。すべてのアイデアはOpen Auth Dialog in 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

...認証のために次のURLを使用して、...それはFacebookのにリダイレクトではなく、オープンのOAuth Dailogしていますか?

編集: 私は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を使用できます。 –

+0

うん、私はjavascriptについて知っている..しかし、PHPのSDDでそれを行うための方法はありますか? – casper123

答えて

0

PHP SDKでのダイアログ応答の検出についての質問にお答えします:

prob getloginURLは、成功またはエラーで使用するURLパラメータを1つだけ取ります。ユーザーが権限ダイアログで[OK]または[キャンセル]をクリックしたかどうかを検出する必要があったため、権限事前設定ダイアログページにリダイレクトするか、ログインした正しいコンテンツを表示することができました。

私がしたことは、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"); 
?>