2

とjavascriptの承認モーダルダイアログ:OAuthの2への切り替えFacebookの私はオールドスクールそれを行うことができますOAuth 2.0の

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 

    <body> 

    <div id="fb-root"></div> 
    <script type="text/javascript" src="http://connect.facebook.net/de_DE/all.js"></script> 

    <script type="text/javascript"> 

     function init(){ 
      FB.init({ 
       appId : 'MY_APP_ID', 
       status : true, // check login status 
       cookie : true, // enable cookies to allow the server to access the session 
       xfbml : true, // parse XFBML 
       channelUrl : 'http://MY_WEBSPACE/facebook-iframe/channel.html' // custom channel 
      }); 
      setupApp(); 
     } 

     function setupApp() { 

      FB.getLoginStatus(
       function(response) { 
        if (!response.session) { 
         FB.ui({method: "permissions.request", "perms": ''} , getUserId); 
        } else { 
         // the user previously authorized the app 
         getUserId(response); 
         window.location = "fanAuthorized.php"; 
        } 
       }); 
      return false; 
     } 

     function getUserId(data){ 
      if(data.status !== 'notConnected' || data.session !== null){ 
       // the user has just authorized the app 
       userId = data.session.uid; 
       accessToken = data.session.access_token; 
       window.location = "fanAuthorized.php"; 
      } else { 
       // the user has just denied to authorize the app 
       window.location = "fanUnauthorized.php"; 
      } 
     } 

     init(); 

    </script> 

</body> 

</html> 

は私がはまり込みます。私は、次のことを試してみました:

<!DOCTYPE html> 
<html xmlns:fb="https://www.facebook.com/2008/fbml"> 
    <head> 
    </head> 
<body> 

    <div id="fb-root"></div> 

    <script> 
    window.fbAsyncInit = function() { 
     FB.init({ appId: 'MY_APP_ID', 
      status: true, 
      cookie: true, 
      xfbml: true, 
      oauth: true 
     }); 

     function updatePage(response) { 

      if (response.authResponse) { 
       // user is already logged in and connected 
       window.location = "fanAuthorized.php"; 
      } else { 
       // user is not connected or logged out 
       FB.login(function(response) { 
        if (response.authResponse) { 
         window.location = "fanAuthorized.php"; 
        } else { 
         // user has just cancelled login or denied permission 
         window.location = "fanUnauthorized.php"; 
        } 
       }, {scope:''}); 
      } 
     } 

     // run once with current status and whenever the status changes 
     FB.getLoginStatus(updatePage); 
     FB.Event.subscribe('auth.statusChange', updatePage);  
    }; 

    (function() { 
     var e = document.createElement('script'); e.async = true; 
     e.src = document.location.protocol 
     + '//connect.facebook.net/de_DE/all.js'; 
     document.getElementById('fb-root').appendChild(e); 
    }()); 

    </script> 

</body> 
</html> 

このコードは、ポップアップダイアログの承認に私のモーダルダイアログの承認をオンにし、ユーザーとの対話なしにポップアップがブラウザによってブロックされます。私は許可ダイアログがユーザの介入なしにブロック解除され、現在のページ(私のFacebookのファンページ)にとどまりません。それを行う方法はありますか?前もって感謝します!

UPDATE:

私は非ポップアップウェイダイアログ承認を実装するために管理してきたようです。認証ダイアログは、同じウィンドウ内で(モーダルダイアログではなく)ユーザーが操作することなく開き、ブラウザによってブロックされません。ユーザーがアプリを承認した後、彼はちょうど彼が来たfacebook fanpage iframeの同じタブにリダイレクトされます。その後、アプリケーションはユーザーが接続されていることを認識します。ユーザーが承認をキャンセルすると、ユーザーはファンページの壁にリダイレクトされます。そして今コード:

fanPage.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 

    <!-- Initialize Facebook authorization dialogue --> 
    <?php $app_id = "MY_APP_ID"; ?> 

    <div id="fb-root"></div> 
    <script type="text/javascript" src="http://connect.facebook.net/de_DE/all.js"></script> 

    <script type="text/javascript"> 
     <!-- 

     function init(){ 
      FB.init({ 
       appId : '<?php echo $app_id; ?>', 
       status : true, // check login status 
       cookie : true, // enable cookies to allow the server to access the session 
       xfbml : true, // parse XFBML 
       channelUrl : 'http://MY_WEBSPACE/facebook-iframe/channel.html', // custom channel 
       oauth : true // enable OAuth 
      }); 

      FB.getLoginStatus(function(response) { 
       if (response.status !== 'connected') { 

        var api_key = "<?php echo $app_id; ?>"; 
        var canvas_page = escape("http://apps.facebook.com/MY_APP/"); 

        var redirect = 'https://www.facebook.com/login.php?api_key=' + api_key 
         + '&extern=1&fbconnect=1&v=1.0' 
         + '&next=' + canvas_page + 'fanAuthorized.php' 
         + '&cancel_url=' + canvas_page + 'fanUnauthorized.php'; 
        self.parent.location = redirect; 
       } else { 
        window.alert("You are connected!"); 
       } 
      }); 
     } 

     init(); 

     //--> 
    </script> 

</body> 

</html> 

fanUnauthorized.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

</head> 

    <script type="text/javascript"> 
     <!-- 
      top.location.href='http://www.facebook.com/pages/MY_FANPAGE_NAME/MY_FANPAGE_ID'; 
     //--> 
    </script> 

<body> 
</body> 
</html> 

fanAuthorized.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Untitled Document</title> 
</head> 

    <script type="text/javascript"> 
     <!-- 
      top.location.href='http://www.facebook.com/pages/MY_PAGE_NAME/MY_PAGE_ID?sk=app_MY_APP_ID; 
     //--> 
    </script> 

<body> 
</body> 
</html> 

、あなたはchannel.htmlが何であるかを不思議に思っている場合すべてについて - ここにあります:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" lang="en_US"> 
    <head> 
     <title> </title> 
    </head> 
    <body> 
     <script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script> 
    </body> 
</html> 
+0

私はこれを探していました。私が試してみましょう!! –

答えて

2

もう少し前に質問を更新しました。ここまでで、FB.ui、JQueryUI Dialogなどを使用して、承認ダイアログをモーダルレイヤに表示する方法がもうないことは確かです。

関連する問題