it-swarm-id.com

cara mendapatkan id email pengguna Facebook menggunakan javascript sdk

Saya menggunakan JavaScript API untuk membuat aplikasi saya untuk Facebook. Masalahnya adalah, ia kembali
email = undefined

Saya tidak tahu kenapa? Dan jika saya menggunakan tombol login/logout Facebook pada aplikasi saya maka peringatan itu menunjukkan id email yang benar dari pengguna tetapi saya tidak ingin melakukan itu .. 

Ini kode saya: 

<p><fb:login-button autologoutlink="true" perms="user_about_me,email"></fb:login-button></p>

<script>
window.fbAsyncInit = function () {
  FB.init({ appId: '250180631699888', status: true, cookie: true,
  xfbml: true
});

  FB.getLoginStatus(function (response) {
    if (response.session) {
      greet();
    }
  });
};
(function () {
  var e = document.createElement('script');
  e.type = 'text/javascript';
  e.src = document.location.protocol +
  '//connect.facebook.net/en_US/all.js';
  e.async = true;
  document.getElementById('fb-root').appendChild(e);
} ());

function greet() {
  FB.api('/me', function (response) {
  alert('Welcome, ' + response.name + "!");
  alert('Your email id is : '+ response.email);
});
}
</script>
31
user958414

Menurut info terbaru di halaman facebook Anda harus menggunakan 'lingkup' daripada perms. https://developers.facebook.com/docs/reference/javascript/FB.login/

Jika Anda berkunjung 

https://developers.facebook.com/tools/console/

dan gunakan contoh fb-api -> user-info sebagai titik awal, kemudian logout dan kembali lagi, seharusnya meminta Anda untuk perms email dan Anda dapat melihat email Anda sedang dicetak. Ini dilakukan dengan menggunakan response.email seperti yang Anda sebutkan di posting Anda.

9
TommyBs
// https://developers.facebook.com/docs/javascript/reference/FB.api/
// v2.4

FB.api('/me', { locale: 'en_US', fields: 'name, email' },
  function(response) {
    console.log(response.email);
  }
);
93
masakielastic

di sini adalah contoh bagaimana saya mengambil nama pengguna dan email:

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>

<script>
  $(function() {
    FB.init({
      appId  : 'APP_ID',
      status : true, // check login status
      cookie : true, // enable cookies to allow the server to access the session
      xfbml  : true  // parse XFBML
    });

    FB.getLoginStatus(function(response) {
      if (response.status == 'connected') {
        getCurrentUserInfo(response)
      } else {
        FB.login(function(response) {
          if (response.authResponse){
            getCurrentUserInfo(response)
          } else {
            console.log('Auth cancelled.')
          }
        }, { scope: 'email' });
      }
    });

    function getCurrentUserInfo() {
      FB.api('/me', function(userInfo) {
        console.log(userInfo.name + ': ' + userInfo.email);
      });
    }
  });
</script>
13
<button id="fb-login">Login & Permissions</button>

<script>
document.getElementById('fb-login').onclick = function() {
  var cb = function(response) {
    Log.info('FB.login callback', response);
    if (response.status === 'connected') {
      Log.info('User logged in');
    } else {
      Log.info('User is logged out');
    }
  };
  FB.login(cb, { scope: 'email' });
};
</script>

Gunakan ini untuk izin tambahan 

untuk lebih jelasnya kunjungi: https://www.fbrell.com/examples/

8
Ram Balwad

Ada beberapa hal yang salah dengan solusi Anda. Pertama-tama Anda menggunakan skema otentikasi yang lama. Anda harus menggunakan yang baru yang dijelaskan di sini: https://developers.facebook.com/docs/reference/javascript/

Anda perlu menambahkan oauth: true ke fungsi init Anda, dan pastikan getLoginStatus mencari jenis respons baru.

Ketika itu dikatakan, Anda perlu memastikan Anda memiliki izin yang tepat untuk melihat email pengguna. Anda dapat melihat izin yang diperlukan di sini: http://developers.facebook.com/docs/reference/api/user/

Anda mendapatkannya dengan menggunakan fungsi FB.login seperti yang dijelaskan oleh TommyBs dalam jawaban lain. 

Setelah Anda memiliki opsi itu, Anda dapat menggunakan fungsi FB.api untuk mendapatkan email.

0
Kasper Vesth