2012-09-19 41 views
5

Tôi đang tạo một ứng dụng hiển thị bạn bè trên Facebook. Trước tiên, người dùng cần phải bấm vào nút đăng nhập sau đó một màn hình popup đơn giản sẽ xuất hiện sau khi điền id đăng nhập và mật khẩu nó sẽ hiển thị danh sách bạn bè.
Mọi thứ đều ổn và chạy trên Firefox, Chrome, IE nhưng nó sẽ không mở popup trong Safari và iPhone.
người nào đó đề xuất tôi thêm tên miền và tên kênh trong channelUrl. Tôi tạo một số channel.html và thêm tham chiếu nhưng nó không giúp tôi.
Tôi tìm kiếm rất nhiều nhưng không thấy hữu ích.Đăng nhập Facebook không mở trong Safari/iPhone

Đây là mã của tôi.
custom.js

function getUser() 
{ 
FB.init({ 
    appId  : '289403314507596', // App ID 
    channelUrl : 'http://bc2-236-161.compute-1.amazonaws.com/html/channel.html', // Channel File 
    status  : true, // check login status 
    cookie  : true, // enable cookies to allow the server to access the session 
    xfbml  : true // parse XFBML 
}); 

(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)); 

//check current user login status 
FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
     window.location="facebook_friend.html" 
     loadFriends(); 
    } else { 
     //user is not connected. 
     FB.login(function(response) { 
      if (response.authResponse) { 
       window.location="facebook_friend.html" 
       loadFriends(); 
      } else { 
       alert('User cancelled login or did not fully authorize.'); 
      } 
     }); 
    } 
}); 
} 
//start from here 
$(document).ready(function(){ 
$('.load-button').click(function(){ 
    getUser(); 
}); 
}); 

channel.html

<script src="//connect.facebook.net/en_US/all.js"></script>// i add this line in channel.html 

refer_friend.html
tôi thêm tài liệu tham khảo của custom.js trong tập tin này

<div id="fb-root"></div> 
    <script src="http://connect.facebook.net/en_US/all.js"></script> 
    <img src="includes/fb-btn1.png" class="load-button" style=" 
    width: 290px; 
    Height: 40px; 
    margin-top: 5px;"/> 

Trả lời

4

Ok ... Sau khi lãng phí đầy đủ của tôi ngày tôi có một câu trả lời. Sử dụng Javascript_Facebook Sdk, khi bạn nhấp vào nút Đăng nhập, nó sẽ mở cửa sổ bật lên. Và trong Safari hoặc iPhone (của tôi), tôi bật tùy chọn Chặn bật lên.
Vì vậy, tôi không thể nhìn thấy cửa sổ đăng nhập Facebook. bạn cần cho phép cửa sổ bật lên.
Bạn có thể cho phép pop-up bằng cách nhấp vào

Safari-disable Block pop-up windows 

hoặc

safari-preference-then disable checkbox of pop-up window's  

hoặc Bạn có thể sử dụng một phím tắt:

shift-[command key]-K. 

cổ vũ.

+4

Vấn đề chính với mã của bạn là bạn gọi 'FB.login' tự động - khi đó cửa sổ bật lên rất có khả năng bị chặn bởi trình duyệt hiện tại. Đề xuất chung là chỉ gọi phương thức này trên tương tác người dùng rõ ràng, ví dụ: nhấp vào liên kết/nút để kích hoạt đăng nhập. – CBroe

+0

cảm ơn thông tin này. Tôi sẽ thử cái này –

+0

Safari có vẻ rất nhạy cảm. tương tự xảy ra nếu bạn gọi FB.getLoginStatus ở trên mã bên trong trình xử lý nhấp chuột. Hiện đang trải nghiệm điều này trong Safari Phiên bản 6.0.5 (7536.30.1). Tôi nghĩ rằng nó bởi vì FB.login được gọi bên trong một hàm, ngay cả khi được kích hoạt/được gọi bởi sự kiện nhấp của người dùng ... – Hans

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