0

以下のようにFacebookにログインしています。ただし、イベントはトリガーされません(FB.Event.subscribe(..)、GetFBLoginStatus())。ローカルホストで実行し、アプリケーションで指定しますが、この目的では必要ありません。javascriptがロードされていないように見えますが、facebookbuttonがレンダリングされています。何を変更する必要がありますか?「ログイン」をクリックすると、ポップアップウィンドウがアクセス許可を要求しますが、それ以上は何も表示されません。

     <html>
<head>
  <title>My Facebook Login Page</title>
</head>
<body>

  <div id="fb-root"></div>
  <script type ="text/javascript">
      window.fbAsyncInit = function () {
          FB.init({
              appId: 'some id', // App ID
              status: true, // check login status
              cookie: true, // enable cookies to allow the server to access the session
              xfbml: true  // parse XFBML
          });
          FB.Event.subscribe('auth.login', function (response) { alert('You logged in'); });
      };
      // 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 GetFBLoginStatus() {
          FB.getLoginStatus(function (response) {
              console.log(response);
              if (response.status === 'connected') {
                  var accessToken = response.authResponse.accessToken;
                  alert(accessToken);
              } else if (response.status === 'not_authorized') {
                  //login function
                  alert('login first');
              } else {
                  //login function
                  alert('login first');
              }
          }, true);
      }
  </script>
    <div class="fb-login-button"  scope="email,user_checkins,read_mailbox">Login with Facebook</div>
      //this function is not work -> javascript not loaded?
    <button onclick = "GetFBLoginStatus();">GetStatus</button>
</body>

4

1 に答える 1

1

おそらく問題は、ローカルホストがcoockiesを受け入れていないことです。これはよく起こります。FB JS SDKがユーザーのログイン情報をページに渡す方法であるため、Cookieを有効にする必要があります。私は通常、www.localhost.com経由でローカルホストにアクセスするようにシステム/ホストを編集します。これにより、ブラウザはローカルホストを検出せず、必要なすべてのCookieを書き込みます。

また、関数をFB.initの前に呼び出すことができ、FBオブジェクト(関数内で使用される)がまだ作成されていないためにクラッシュするため、GetFBLoginStatus()関数を内部で定義することをお勧めします。window.fbAsyncInitFB.getLoginStatus

auth.loginユーザーがすでにアプリを承認していると、イベントがトリガーされない場合があると言う人もいます。これは、このイベントは、接続するステータスが変更された場合にのみトリガーされるためです。ユーザーが過去に承認した場合、何も変更されていません。やのような他のイベントがありauth.authResponseChangeますauth.statusChange。たぶん、彼らはあなたのニーズにうまく機能します。

于 2012-08-06T02:11:52.717 に答える