2017-06-07 3 views
-1

私は自分のWebサイト用にFacbookSDK 2.8を実装しようとしていますが、以下は単純化されたコードです。Facebook SDK 2.8は電子メールアドレスを与えません

<button onclick="logout()">Logout</button> 
    <button onclick="login()">LogIn</button> 
    <script> 
     (function(d, s, id) { 
      var js, fjs = d.getElementsByTagName(s)[0]; 
      if (d.getElementById(id)) return; 
      js = d.createElement(s); 
      js.id = id; 
      js.src = "//connect.facebook.net/en_US/sdk.js"; 
      fjs.parentNode.insertBefore(js, fjs); 
     }(document, 'script', 'facebook-jssdk')); 
     setTimeout(() => { 
      window.fbAsyncInit =() => { 
       FB.init({ 
        appId: 'xxxxxxx', //My app id here 
        cookie: true, // enable cookies to allow the server to access 
        // the session 
        xfbml: true, // parse social plugins on this page 
        version: 'v2.8' // use graph api version 2.8 
       }); 
       checkFBLoginStatus(); 
      } 
     }) 

     function checkFBLoginStatus() { 
      FB.getLoginStatus((response) => { 
       console.log(response) 
      }); 
     } 

     function logout() { 
      FB.logout(function(response) { 
       console.log(response) 
      }) 
     } 

     function login() { 
      FB.login(function(response) { 
       console.log(response) 
       FB.api('/me?fields=id,email,name', function(response) { 

        console.log(JSON.stringify(response)); 
       }); 
      }, { 
       scope: 'email' 
      }) 
     } 


     function onLoginSuccess() { 
      FB.getLoginStatus(function(response) { 
       console.log(response) 
      }) 
     } 
    </script> 

私は、ログアウト時に応答を取得し、ここで

ログインしています、私が設定したユーザの電子メールを必要とするのに対し、私は唯一のIDと名前を取得しています、私の質問はFB.api呼び出しで

  1. です一意のユーザー識別子として使用します。

  2. いつ私はnot_authorizedを達成することができます。私はステータスが「接続されています」、ログインすると「不明」になっています。私はun_authorized状態を再現することができないので、私はそれをコード化することができます。

+0

_ "ユニークなユーザー識別子として設定するにはユーザーの電子メールが必要です" msgstr ""電子メール "のアクセス許可のドキュメントは、あなたが取得できないことを既に示しています。 Facebookのすべてのユーザーからのメール。アプリスコープのユーザーIDは固有のIDです。 – CBroe

答えて

0

電子メールではなく、ユーザーを識別するためにユーザーのIDを使用する必要があります。ユーザーは電子メールを持っている必要はなく、電話番号を使ってログインすることもできます。ログインプロセス/ポップアップで電子メールの許可を求められたことを確認してください。

関連する問題