0

キャンバスアプリのPHPログインをJSログインに置き換えようとしていますが、Facebookの例をここhttps://developers.facebook.com/docs/reference/javascript/とここhttps://developersからほぼ正確にコピーしました。 .facebook.com / docs / reference / javascript /FB.login/。ただし、アラートプロンプトが開いていても、ユーザーがアクセス許可を受け入れるように求めるプロンプトは開いていません。以下のコードから理由を誰かが理解できますか?私はこれに何時間も携わっていますが、私のコードが提案されたものと実際にどのように異なるのかわかりません。javascriptを実行していないブラウザ保護と関係がありますか?

<?php

require_once 'config.php'; // This contains app information
//include_once 'scripts/mysql_connect.php'; // This is the database connection configuration
require_once 'Database.php';
$fbconfig['appUrl'] = "https://localhost/FindAFlatmate-Dev/";

?>

    <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">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Profile Page</title>
    </head>
    <body> 
    <div id="fb-root"></div>
    <script>
      window.fbAsyncInit = function() {
        FB.init({
          appId      : '127865210690483', // App ID
          status     : true, // check login status
          cookie     : true, // enable cookies to allow the server to access the session
          xfbml      : true  // parse XFBML
        });

        // Additional initialization code here
        alert('Api loaded');

    FB.login(function(response) {
       if (response.authResponse) {
         console.log('Welcome!  Fetching your information.... ');
         FB.api('/me', function(response) {
           console.log('Good to see you, ' + response.name + '.');
         });
       } else {
         console.log('User cancelled login or did not fully authorize.');
       }
     });
      };

      // 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));

     </script>
    </body> 
    </html>
4

1 に答える 1

1

ただし、アラート プロンプトが開いていても、ユーザーがアクセス許可を受け入れるように求めるプロンプトは開いていません。以下のコードから理由がわかる人はいますか?

ユーザーの操作なしで、ページの読み込み時に FB.login を直接呼び出しているため、ログイン ダイアログがまったく表示されないのは、ブラウザのポップアップ ブロッカーである可能性が最も高いです。

FB.login の一般的な推奨事項は、ユーザーが「ログイン」などのリンク/ボタンをクリックするなど、明示的なユーザー操作でのみ呼び出すことです。現在のブラウザーのポップアップ ブロッカーのデフォルト設定は、ユーザーが何らかの方法で要求することなく「自動的に」開かれるポップアップのみをブロックするため、FB.login が開くポップアップがブロックされる可能性が低くなります。

于 2012-08-13T09:42:15.580 に答える