0

私はFacebook JS SDKを使用して、ここにある例ごとにクライアント側認証を行っています

<!DOCTYPE html>
<html>
  <head>
    <title>Facebook Client-side Authentication Example</title>
  </head>
  <body>
    <div id="fb-root"></div>
    <script>
      // 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));

      // Init the SDK upon load
      window.fbAsyncInit = function() {
        FB.init({
          appId      : 'YOUR_APP_ID', // App ID
          channelUrl : '//'+window.location.hostname+'/channel', // Path to your Channel File
          status     : true, // check login status
          cookie     : true, // enable cookies to allow the server to access the session
          xfbml      : true  // parse XFBML
        });

        // listen for and handle auth.statusChange events
        FB.Event.subscribe('auth.statusChange', function(response) {
          if (response.authResponse) {
            // user has auth'd your app and is logged into Facebook
            FB.api('/me', function(me){
              if (me.name) {
                document.getElementById('auth-displayname').innerHTML = me.name;
              }
            })
            document.getElementById('auth-loggedout').style.display = 'none';
            document.getElementById('auth-loggedin').style.display = 'block';
          } else {
            // user has not auth'd your app, or is not logged into Facebook
            document.getElementById('auth-loggedout').style.display = 'block';
            document.getElementById('auth-loggedin').style.display = 'none';
          }
        });

        // respond to clicks on the login and logout links
        document.getElementById('auth-loginlink').addEventListener('click', function(){
          FB.login();
        });
        document.getElementById('auth-logoutlink').addEventListener('click', function(){
          FB.logout();
        }); 
      } 
    </script>

    <h1>Facebook Client-side Authentication Example</h1>
      <div id="auth-status">
        <div id="auth-loggedout">
          <a href="#" id="auth-loginlink">Login</a>
        </div>
        <div id="auth-loggedin" style="display:none">
          Hi, <span id="auth-displayname"></span>  
        (<a href="#" id="auth-logoutlink">logout</a>)
      </div>
    </div>

  </body>
</html>

いじり回して把握できなかったのは、このコードにスコープ パラメーターを追加して、電子メール アドレスへのアクセスを要求する方法です。誰かが私を正しい方向に向けることができますか?

ありがとう!

- - 編集 - -

ドキュメントにあるこのコードを見ました

FB.login(function(response) {
   // handle the response
 }, {scope: 'email'});

それが機能していないため、この既存のコードにそれを組み込む方法がわからないと思います

document.getElementById('auth-loginlink').addEventListener('click', function(){
              FB.login();
            });

上記の行を更新して追加のスコープ パラメータを組み込むことができる人がいれば、ぜひ試してみたいと思います。

4

1 に答える 1

2

あなたのためのシンプルなソリューション。これらのパラメーターを関数に追加するだけFB.login()です。

 FB.login(function(){}, {scope: 'email'});

ログイン応答を処理する必要がない場合は、空の関数を提供してください。

于 2012-09-07T01:04:07.590 に答える