2

これが私のコードです:

<!DOCTYPE html>
<html xmlns:fb="https://www.facebook.com/2008/fbml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>New JavaScript SDK & OAuth 2.0 based FBConnect Tutorial |     
Thinkdiff.net</title>
</head>

<body>

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

<script>

  window.fbAsyncInit = function() {
  FB.init({
  appId      : '154062364721089', // App ID
  channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
  status     : true, // check login status
  cookie     : true, // enable cookies to allow the server to access the session
  xfbml      : true,  // parse XFBML
  oauth: true
  });

  // Additional initialization code here

   alert('Api loaded');

   FB.login(function(response)
   {
    console.log(response);
   });

   };

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

test

</body>
</html>

しかし、このファイルをブラウザで開くと、FacebookAPIが読み込まれません。画面に「テスト」と表示されているだけです。ブラウザは、APIをロードするためにFacebookに接続する必要があると思います。これは、ブラウザの下部にある接続メッセージとして知られていると思いますが、これは発生していません。

4

3 に答える 3

2

JavaScriptの解析エラーは、最初に対処する必要があります。コードに、FB.init()呼び出し内の最後の2つのディクショナリ要素(xfbmlおよびoauth)の間にコンマがありません

APIをロードするときにURLに「//」が含まれているため、ローカルマシンから実行する場合(つまり、ディスク上のHTMLファイルをダブルクリックする場合)を除いて、IEとChromeでコードを正常に機能します

于 2012-04-30T19:38:54.033 に答える
1

Facebookがユーザーにアプリへの接続/許可/ログインを自動的に促すことを期待しているようです。これを行うには、fb apiの初期化の後に以下を追加する必要があります(コードは後になります// Additional initialization code here)...

// Additional initialization code here

alert('Api loaded');

FB.login(function(response)
{
    console.log(response);
});

編集:また、<script>参照を削除して、Facebookのドキュメントから非同期コードを使用してみてください-https: //developers.facebook.com/docs/reference/javascript/

  (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));
于 2012-04-30T19:15:18.673 に答える
1

これが完全に関連しているかどうかわからない場合は、次の行の後に「jsisnotdefined」を取得しているのでこのスレッドを見つけてください。js = d.createElement('script'); js.id = id; js.async = true;

解決策は次の行であることが判明しました。行の括弧内ではなく、後にif (d.getElementById(id)) {return;}末尾が必要です。;

if (d.getElementById(id)) {return;};

if (d.getElementById(id)) {return};

働いたが、:

if (d.getElementById(id)) {return;}

エラーをスローします。

于 2014-01-19T01:15:08.220 に答える