Tôi có ứng dụng canvas trên canvas có cả trang web và trang di động được chỉ định. Trang web hoạt động tốt và cũng như khi mô phỏng trình duyệt sang thiết bị di động với bảng điều khiển mọi thứ hoạt động tốt.Facebook Canvas, Không thể đăng nhập từ facebook trên thiết bị di động
Nhưng, khi tôi cố gắng chạy ứng dụng từ ứng dụng di động facebook, ứng dụng canvas tải (đúng), nhưng không đăng nhập được.
Tôi đang sử dụng hàm FB.login.
login: function() {
var deferred = $q.defer();
FB.login(function (response) {
if (!response || response.error) {
deferred.reject('Error occured');
} else {
deferred.resolve(response);
}
}, {
scope: 'email, user_friends'
});
return deferred.promise;
},
và trong phần cài đặt> advanced - Tôi có: Khách hàng OAuth đăng nhập, Web OAuth đăng nhập, nhúng trình duyệt OAuth đăng nhập, OAuth trị chuyển hướng URI và nhập từ thiết bị điền chính xác.
nhưng vẫn từ ứng dụng dành cho thiết bị di động facebook, ứng dụng canvas không tạo thông tin đăng nhập.
Tôi đã cố gắng làm việc này cả ngày. và tôi không thể tìm thấy giải pháp ở bất cứ đâu. Tôi cũng không thể gỡ lỗi ứng dụng facebook di động.
bất kỳ ý tưởng nào về cách tiếp cận vấn đề này?
EDIT
Cũng nhìn vào các bản ghi máy chủ Node của tôi và tôi thấy rằng FB.login thậm chí còn không được gọi.
EDIT 2
tôi đã kết thúc thay thế đăng nhập với getLoginStatus mà không gây ra vấn đề đối với tôi kể từ khi một ứng dụng facebook vải của nó ... nhưng câu hỏi vẫn là làm thế nào để làm đăng nhập.
EDIT 3 11/26/2015
cũng nên getLoginStatus không hoàn toàn giải quyết vấn đề của tôi vì nó không thực tế đăng nhập người sử dụng trong quá cho các trò chơi vải có lẽ bạn cần phải đăng nhập cho các mục nhập đầu tiên nếu bạn cần cho phép ... giải pháp của tôi là để thêm đăng nhập nếu lợi nhuận getLoginStatus not_autorized như vậy:
/**
* [getLoginStatus get the FB login status]
* @return {[type]} [description]
*/
getLoginStatus: function() {
var deferred = $q.defer();
FB.getLoginStatus(function (response) {
if (response.status === 'connected') {
deferred.resolve(response);
} else if (response.status === 'not_authorized') {
_fbFactory.login().then(function (fbLoginResponse) {
deferred.resolve(fbLoginResponse);
});
} else {
deferred.reject('Error occured');
}
});
return deferred.promise;
},
Nhưng chờ đợi, có nhiều chức năng ... FB.login sẽ không hoạt động tốt trên canvas điện thoại di động trò chơi (không chắc chắn nếu nó không được kích hoạt hoặc blog của trình duyệt các cửa sổ bật lên hoặc cả hai). anyway bạn cần phải chủ động gọi cho nó thông qua nút ... để cho các trò chơi di động canvas Tôi đã có thêm một sự khởi đầu nút chơi và sau đó đăng nhập làm việc ..
EDIT 4 (Final)
cuối cùng tôi nhận thấy rằng FB.login() không được kích hoạt trừ khi một sự kiện bên ngoài kích hoạt nó, vì vậy tôi đã phải thực hiện thay đổi cho Canvas di động, nếu getLoginStatus không trả về kết nối thì tôi hiển thị nút đăng nhập thực hiện đăng nhập ... phần còn lại vẫn giữ nguyên. những gì tôi đã làm cho điện thoại di động cũng tương tự như câu trả lời chấp nhận chỉ cho phù hợp với nhu cầu của tôi ...
Tôi hy vọng điều này sẽ giúp người bên cạnh tôi ...
Bạn có nhận được phản hồi từ phương pháp FB.Login không? Thử dùng Chrome Remote Debugging, https://www.youtube.com/watch?v=HEqwnpLYnI0&feature=youtu.be. –
Phản ứng của 'getLoginStatus' là gì? – Rayon
Tôi nhận được ID người dùng và accessToken đó là những gì tôi cần. –