2012-02-19 38 views
17

Tôi đang sử dụng Đăng ký với Facebook làm một trong những cách để đăng nhập vào ứng dụng web của mình và yêu cầu quyền "email" rõ ràng ..Đăng ký với Facebook đôi khi không cung cấp email

Khi đăng nhập, một số dữ liệu người dùng ($facebook->api('/me')) được lưu trữ trong cơ sở dữ liệu người dùng, tuy nhiên, đôi khi trường email không tồn tại - đây có phải là vấn đề thường gặp không?

+0

hãy xem: http://stackoverflow.com/questions/9601620/facebook-graph-api-returning-an-empty-email? – Mangiucugna

Trả lời

26

Chỉ cần một đoán ...

Các tài liệu facebook nói:

lưu ý: trường này sẽ không được trả lại nếu không có địa chỉ email hợp lệ có sẵn cho người sử dụng

Nguồn: https://developers.facebook.com/docs/reference/api/user/

Vì vậy, khi một địa chỉ email trở nên không hợp lệ (người dùng đã không sử dụng facebook trong nhiều năm và đã phá hủy/thay đổi địa chỉ email của họ kể từ ví dụ), facebook có thể ngừng quay trở lại lĩnh vực này.

5% địa chỉ không hợp lệ có thể lớn, nhưng nếu tôi kiểm tra bạn bè trên facebook, tôi nghĩ rằng hơn 5% trong số họ không bao giờ sử dụng tài khoản của họ và tôi sẽ không ngạc nhiên nếu địa chỉ họ sử dụng khi họ đăng nhập hiện không hợp lệ.

+0

Cảm ơn bạn đã đào bới điều đó từ tài liệu! Tôi không thực sự nghĩ rằng Facebook kiểm tra xem email của người dùng có hợp lệ như thời gian trôi qua hay không. Bạn có thể liên kết tài liệu để tham khảo không? –

+0

đã hoàn tất. Tôi không nghĩ rằng Facebook kiểm tra, nhưng tôi nghĩ Facebook gửi email cho người dùng vì nhiều lý do khác nhau (thông báo, thông báo, v.v.). Sau đó, Facebook biết nếu email hợp lệ hay không! –

+1

Facebook kiểm tra theo thời gian nếu email của người dùng hợp lệ. Tôi có vấn đề này với tài khoản facebook của riêng tôi. Tại thời điểm này, facebook cho rằng email của tôi không hợp lệ. Và nó không trở lại trong trình khám phá đồ thị – Karl

4

Người dùng không phải lúc nào cũng phải cung cấp địa chỉ email để sử dụng Facebook. Họ cũng có thể đăng ký qua SMS, mặc dù nó ít phổ biến hơn.

Tóm lại, FB không phải lúc nào cũng có địa chỉ email, do đó, không thể phân phối nó cho ứng dụng của bạn.

+0

Tất cả người dùng của tôi ở Nhật Bản, nơi SMS hầu như không tồn tại .. Tôi tự hỏi, có cách nào khác để đăng ký Facebook mà không có địa chỉ email không? –

2

Hãy thử:

// Just to make sure email are permitted 
//$facebook->getLoginUrl(array('req_perms' => 'email')) 

// Request email 
FB.api('/me?scope=email', function(response) { /*...*/ }); 

Hoặc:

$email = $facebook->api('user_id?fields=email'); 

VẤN ĐỀ:

  • Người dùng đã thay đổi tầm nhìn của địa chỉ email của mình để "chỉ mình tôi" và do đó bạn không có cách nào để có được nó.
  • Người dùng đã đăng ký bằng SMS thay vì email như được đề cập trong câu trả lời trước.

ALTERNATIVE:

Nếu bạn hoàn toàn cần liên hệ với người sử dụng nhưng bạn không thể có được địa chỉ email của mình nmình vẫn có thể nhận email Facebook của mình (tất cả mọi người có email này): "[email protected]" .

Nếu người dùng sử dụng máy chủ POP, họ sẽ trực tiếp nhận email trong Gmail hoặc những người khác, nếu không, anh ấy sẽ nhận được email của bạn dưới dạng tin nhắn riêng tư. Hạn chế duy nhất nếu phương pháp này là email của bạn phải là "plain/text" chứ không phải "HTML".

+0

Tôi không nghĩ rằng bạn hiểu câu hỏi - FB không trả lại email mặc dù phương pháp tôi cố gắng để có được nó (ngay cả trong FB api thám hiểm) –

+0

Có Tôi hiểu câu hỏi của bạn, xin vui lòng kiểm tra tại câu trả lời cập nhật của tôi. – glautrou

+0

không, bạn không. Tôi đã cho một tiền thưởng để có được một người nào đó đào thông qua tài liệu hoặc có thể một số nhân viên fb có thể cho tôi biết lý do tại sao và trong trường hợp nào tôi sẽ không nhận được địa chỉ email của người dùng. –

1

Một điều là Users don't always have to provide an email address in order to use Facebook(could have registered through mobile) - như đã đề cập bởi Colm. Ngoài việc này-

Vui lòng kiểm tra xem liệu người dùng có chắc chắn cấp cho bạn quyền mở rộng email hoặc sau đó không bị thu hồi hay không. Để có một tấm séc về vấn đề này bạn có thể sử dụng các điều khoản api-

/USER/permissions 
0

Tôi gặp sự cố tương tự & Tôi đã tìm ra nguyên nhân cho việc này. Vấn đề này xảy ra đối với người dùng chưa đặt Địa chỉ email chính của họ (Họ có nhiều địa chỉ email nhưng họ chưa chỉ ra địa chỉ email chính của họ) trong tab Cài đặt tài khoản chung.

Tôi đã thử sử dụng các tài khoản như vậy trên các trang web nổi tiếng khác nhau có đăng nhập Facebook & thậm chí họ không thể truy xuất địa chỉ email từ các tài khoản đó.

Vì vậy, không phải vấn đề với mã (Giả sử bạn đã yêu cầu quyền). Chúng tôi chỉ phải xử lý các trường hợp như vậy & cho người dùng biết rằng chúng tôi đã không nhận được địa chỉ email của họ. Giống như Klout.

Cảm ơn

0

Ngoài những gì @Jigar Jain đã viết ở trên, người dùng thực sự có thể bỏ chọn quyền email trong dòng đăng nhập. Nếu đúng như vậy, địa chỉ email của anh ấy/cô ấy sẽ không được Facebook trả lại. Bạn có thể thực hiện một logic khiến việc đăng nhập không thành công nếu người dùng bỏ chọn quyền truy cập email, buộc người dùng của bạn phải chọn một phương thức đăng nhập khác để đảm bảo rằng địa chỉ email của người dùng được trả lại.

Các vấn đề liên quan