2011-09-08 30 views
7

Tôi đang thêm đăng nhập Facebook vào ứng dụng asp.net hiện có của mình. Tôi đã thêm một nút đăng nhập Facebook vào màn hình đăng nhập của mình. Bây giờ, tôi nhấp vào nút đăng nhập của Facebook và trong IE 9 nó ném ngoại lệ phía máy khách trong all.js trên Dòng 22: if(a.params)b.fbCallID=a.id;Đăng nhập Facebook ném "Quyền bị từ chối"

Ngay cả sau khi tôi thấy màn hình đăng nhập Facebook và có thể đăng nhập và trong trình duyệt chính cửa sổ Tôi nhận được sự kiện auth.login, vì vậy tôi có thể sống với điều đó.

Nhưng, nếu tôi đã đăng nhập vào Facebook, tôi đến trang và nhấp vào nút đăng nhập Facebook, tôi xem nhanh cửa sổ bật lên trống, sau đó tôi nhận được cùng một ngoại lệ phía máy khách và sau đó tôi không nhận được sự kiện trong cửa sổ trình duyệt chính, vì vậy tôi không biết liệu người dùng đã đăng nhập sao cho tôi không thể chuyển hướng họ đến một trang khác.

Tôi đã thử mẹo kênhUrl nhưng không hiệu quả.

Bất kỳ đề xuất nào đang diễn ra?

+0

thể trùng lặp của [Permission denied lỗi trong all.js] (http://facebook.stackoverflow.com/questions/7280007/permission-denied-error-in- all-js) –

Trả lời

2

Tôi tìm thấy lỗi này đã khắc phục sự cố cho tôi; thêm dòng này ngay sau khi bạn gọi FB.init():

// Hack to fix http://bugs.developers.facebook.net/show_bug.cgi?id=20168 for IE7/8/9 
FB.UIServer.setLoadedNode = function (a, b) { 
           FB.UIServer._loadedNodes[a.id] = b; 
          }; 
0

Lý do nó xảy ra (từ trang web và tài liệu tôi đã đọc và tin tôi, tôi đã đọc LOT) là IE từ chối cross-site javascript, và nó thấy all.js khi đi qua hộp cát biên giới. Một cuộc thảo luận tốt có thể được tìm thấy here.

Một số người nói rằng adding the channel.html file works, nhưng chúng tôi đã thử tất cả các hương vị đó và chưa thành công. (Hãy nhớ rằng http hoặc https phải khớp với trang gửi yêu cầu.)

Microsoft makes reference to this same issue và lời khuyên của họ là thêm trang web vào trang web đáng tin cậy (không có tác dụng). Lời khuyên cũ (từ năm ngoái) là thêm CP="HONK" làm chính sách bảo mật nhỏ gọn của bạn, nhưng tôi nghĩ rằng lỗi đã được khắc phục và liên quan đến cookie.

Điều có vẻ xảy ra với chúng tôi là đăng nhập thực sự tiếp tục và gọi lại được gọi đúng cách, nhưng chuỗi chính sẽ hoàn thành bên ngoài cuộc gọi đăng nhập sẽ ngừng thực hiện (do lỗi). Vì vậy, bất kỳ chức năng nào bên ngoài đăng nhập không thực hiện được sau cuộc gọi đăng nhập.

Nếu có ai có cách để khiến IE không ném ngoại lệ hoặc để tạo giải pháp cho vấn đề này, tôi rất muốn có nó. Mọi thông tin cần thiết, tôi sẽ rất sẵn lòng cung cấp, nhưng mẫu có tại đây:

enter code here 
code before login here... 
FB.login(function(response){ 
    callback stuff here... This part fires. 
}); 
main thread stuff here... This fails because of permission denied error. 
+0

Ý của bạn là gì khi tham khảo "chuỗi chính"? JS là một luồng đơn và nó có thể ngừng thực thi mã nếu nó chạm vào một lỗi nhất định. – Andrey

+0

Thực ra, tôi nghĩ tôi có thể đang làm gì đó - hiện tại tôi chỉ đang sử dụng sự kiện onlogin của nút đăng nhập facebook, và có vẻ như hoạt động tốt cho cả hai trường hợp khi người dùng đã đăng nhập vào FB và khi không. Tôi vẫn nhận được ngoại lệ "Cho phép bị từ chối" nhưng nó không dừng chức năng. Tôi sẽ đăng giải pháp ở đây khi nó được kiểm tra và tôi chắc chắn rằng nó đang hoạt động. – Andrey

+0

Javascript không đa luồng như vậy, nhưng gọi lại bắt chước đa luồng theo một số cách. Việc thực hiện những gì tôi gọi là "chủ đề chính" (những gì xảy ra sau cuộc gọi FB.Login) đang bị tạm dừng, nhưng cuộc gọi lại chạy đến khi hoàn thành. Tôi không chắc chắn tại sao, nhưng chúng tôi đã xác minh điều này với các cảnh báo trong mã. – MontyThreeCard

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