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;"/>
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
cảm ơn thông tin này. Tôi sẽ thử cái này –
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