Chúng tôi có:
(1) Facebook API dựa trên ứng dụng web với chức năng Facebook OAuth (“các ứng dụng web FB”)
(2) UIWebView
trình duyệt dựa trên trên iPad (“Browser”)Tôi làm cách nào để có UIWebView mở trang đăng nhập Facebook theo yêu cầu OAuth trên iOS 5 và iOS 6?
chúng tôi mục tiêu là mở trang Đăng nhập Facebook để đăng nhập vào ứng dụng web FB (1) bên trong Trình duyệt dựa trên UIWebView (2) trên iPad.
Có một vấn đề tương tự như ở đây:
http://facebook.stackoverflow.com/questions/11337285/no-longer-able-to-login-to-ios-app-via-oauth-the-page-requested-was-not-found
Tuy nhiên, vấn đề của câu hỏi đó xảy ra sau khi người dùng nhập vào đăng nhập và mật khẩu vào form Facebook. Vấn đề của chúng tôi là chúng tôi không thể nhận được mẫu đăng nhập Facebook được hiển thị ngay từ đầu. Thay đổi loại ứng dụng từ "Web" thành "Native/Desktop", như được đề xuất trong câu hỏi đó, không giúp được gì.
bước:
1. Mở trang web (đơn giản trang HTML) của chúng tôi với UIWebView
Trình duyệt này
2. Nhấp vào nút khởi động “FB ứng dụng web” trên trang này cố gắng
3. OnClick hoạt Javascript để khởi OAuth, mà nên mở màn hình đăng nhập của Facebook để đăng nhập vào ứng dụng FB web
kết quả hiện tại (vấn đề):
trên iOS 5. + và iOS 6. + thiết bị
- trang web của chúng tôi vẫn không thay đổi
- Trang đăng nhập Facebook là N OT hiển thị (trang web của chúng tôi vẫn còn hiển thị)
Trên iOS 4.3 (chỉ hoạt động như dự kiến):
- trang đăng nhập Facebook được mở trong đối tượng UIWebView
cùng của trình duyệt (thay thế trang web của chúng tôi)
Kết quả mong đợi :
- Trang đăng nhập Facebook được hiển thị và người dùng có thể nhập thông tin đăng nhập Facebook & mật khẩu
- Hoạt động trên iOS 5. + và iOS 6. + nếu được khởi chạy trong trình duyệt Safari trên iPad. Trang đăng nhập Facebook được mở trong một tab riêng (ngược lại, không có các tab riêng biệt trong UIWebView
)
Câu hỏi: Làm cách nào để có được UIWebView
để mở trang đăng nhập Facebook theo yêu cầu OAuth trên iOS 5+ và iOS 6 +?
Chi tiết kỹ thuật:
Chúng tôi đăng nhập khác nhau NSURLRequest
lĩnh vực từ bên trong
-(BOOL)webView(UIWebView*)webView shouldStartLoadWithRequest(NSURLREquest*)request navigationType:…
Và chúng tôi nhận thấy một số khác biệt trong các bản ghi cho “đúng” và hành vi “không chính xác”. Dưới đây như thế nào thực hiện dòng tìm kiếm tôi:
Thứ nhất, tôi nhấn nút “FB Web App” khởi động để bắt đầu OAuth, sau đó một số trường hợp đi
iOS 4.3, “đúng”
yêu cầu www.facebook.com/dialog/oauth? ...
yêu cầu fbwebapp.com
yêu cầu tới m.facebook.com/login.php? ....
--here facebook đăng nhập xuất hiện
iOS 5.0, “incorrect1”
yêu cầu www.facebook.com/dialog/oauth? ...
yêu cầu fbwebapp.com
yêu cầu m.facebook. com/login.php? ...
sau đó, nó có thể
nhiều --một của m.facebook.com/login.php?...with tiếp theo ... trong thông số
tiếp theo lỗi sqlite
- ngay bây giờ tôi thấy "Xin lỗi, có gì đó không ổn" ge từ facebook (đây là thời điểm đầu tiên ở tất cả tôi gặp nó)
iOS 6.0 “incorrect2”
yêu cầu www.facebook.com/dialog/oauth? ...
yêu cầu fbwebapp.com
-(void)webView:(UIWebView*)webView didFailLoadWithError:(NSError*)error is invoked with error code -999
Bạn có thể thấy hành vi đó chắc chắn phụ thuộc vào phiên bản iOS. Nhưng trường hợp phổ biến là lỗi xảy ra trên bước nhận m.facebook.com/login.php .. URL. Nhưng đó là tất cả những gì chúng tôi có thể phát hiện.
Chúng tôi đang đập đầu vào bức tường đó cho cả ngày tìm kiếm giải pháp. Vô vọng.
Bạn có thể giúp chúng tôi mở trang Đăng nhập Facebook trong UIWebView
để phản hồi lại OAuth không?
, bạn có thể giải thích thêm về giải pháp này? Tôi là một newbie tại iOS, nhưng đã thử một số mẫu SDK của Facebook. Xem ya – owlmsj