2012-10-07 34 views
6

Trong ứng dụng iPhone của tôi, tôi muốn người dùng có thể chia sẻ liên kết trên Facebook.SDK Facebook - Cửa sổ bật lên đăng nhập iOS6 không thể bị loại bỏ

Khi họ nhấp vào "chia sẻ", tôi sử dụng mã sau để đăng nhập vào Facebook bằng SDK 3.1 mới, sau đó sử dụng FBRequestConnection trong trình xử lý hoàn thành (đơn giản publish_action).

[FBSession openActiveSessionWithPublishPermissions:@[@"publish_actions"] defaultAudience:FBSessionDefaultAudienceFriends allowLoginUI:true completionHandler:^(FBSession *session, FBSessionState status, NSError *error) { 

    // Now call FBRequestConnection to post in the stream 

}]; 

Khi người dùng đã cài đặt ứng dụng Facebook, ứng dụng này chỉ ủy quyền đăng nhập ứng dụng. Tuy nhiên, khi không, nó sẽ mở trang đăng nhập trong một WebView.

Trong iOS 5, nó sẽ mở ra Mobile Safari:

enter image description here

Vấn đề của tôi là trên iOS 6, tôi nhận được dòng chảy tương tự nhưng trong một popup modal thay (lên trên ứng dụng của tôi).

enter image description here

tôi có 2 vấn đề với cửa sổ bật lên:

1. Bế nó

Nó không thể bị hủy bỏ hoặc bãi bỏ. Để so sánh, ứng dụng HelloFacebookSample từ SDK có cùng cửa sổ bật lên nhưng với nút chéo để đóng.

enter image description here

LƯU Ý: tại giải quyết nhờ ravi, tôi nhớ da diết bó tài nguyên Facebook, trong đó có các "gần" hình ảnh.

2. Chấp nhận các điều khoản

Trên bước thứ hai của popup (xem màn hình ở trên), nhấn Okay không làm gì cả. Nhấn "X" gọi trình xử lý hoàn tất có lỗi, điều này thật tuyệt, nhưng không có gì xảy ra với Được rồi. Đây có phải là cách đúng để đăng nhập vào Facebook bằng SDK 3.1 không? Tôi có thiếu một cuộc gọi lại để phản ứng với cửa sổ bật lên cụ thể không?

Một số chi tiết làm rõ:

này chỉ xảy ra trong iOS6 khi ứng dụng Facebook là không cài đặt và tài khoản Facebook là không được cấu hình trong phần cài đặt iOS .

Cảm ơn!

+0

1 im có vấn đề tương tự sau khi FB được cập nhật để 3.0SDk – iMeMyself

+1

Có thể là một lỗi trong SDK. Chỉ cần một lưu ý; Facebook khuyến khích yêu cầu quyền xuất bản khi bạn đang thực sự xuất bản (và không phải khi kết nối): http://developers.facebook.com/docs/howtos/ios-6/ –

+0

Cảm ơn Kristofer - bằng cách "thực thi publish_action sau" Tôi thực sự có nghĩa là ngay sau khi gọi lại đăng nhập đến. Tôi nghĩ rằng nên được OK – Gromix

Trả lời

7

Tôi không thể nhận xét vì danh tiếng của tôi nhỏ hơn 50, vì vậy, hãy cố gắng chỉ ra các quan sát của tôi là câu trả lời.

Tôi cũng nhận thấy sự cố này khi sử dụng Facebook sdk3.1 trên ios6.Trong trường hợp của tôi, tôi đang sử dụng tạo đối tượng facebook kiểu cũ và gọi [facebook authorize:permissions] trên đó, nhưng tôi đã sửa đổi mã nguồn để luôn sử dụng "FBSessionLoginBehaviorForcingWebView" để thông tin đăng nhập của tôi luôn thông qua đăng nhập web trong ứng dụng.

Trong trường hợp của tôi, tôi đã thiếu FBUserSettingsViewResources.bundle và FacebookSDKResources.bundle, vì vậy tôi không thể thấy nút chéo (nhưng tôi đã có thể chạm vào điểm đó và nhận lại cuộc gọi - (void)fbDidNotLogin:(BOOL)cancelled {).

+0

Cảm ơn rất nhiều, đây là chắc chắn là một bước đi đúng hướng! Tôi cũng thiếu gói tài nguyên. Giờ tôi có thể xem và nhấn vào nút đóng. Nút "Okay" ở bên phải vẫn không làm bất cứ điều gì mặc dù, đó có thể là một vấn đề khác nhau. – Gromix

+0

ngay cả sau khi thêm FBUserSettingsViewResources.bundle và FacwebookSDKResources.bundle tôi không thể nhìn thấy nút hủy bỏ. – iMeMyself

+0

@ravi: nếu bạn không nhớ tôi hỏi, bạn sẽ nhận được gì thứ hai popup WebView nói rằng 'Bạn đã ủy quyền ứng dụng này [ Okay]? Và nếu có, bạn có biết phương thức nào được gọi khi bạn nhấp vào 'Okay' không? Tôi dường như không hiểu vì sao tôi không có dây đúng cách. – Gromix

0

Tôi cũng gặp phải vấn đề này và nó dường như là một lỗi được biết:

https://developers.facebook.com/bugs/539702426044893?browse=search_507daefc9af416244781488

tôi đã không giải quyết vấn đề nêu ra, nhưng đối với tôi nó chỉ dường như xảy ra trong mô phỏng. Ứng dụng của tôi dường như luôn luôn đăng nhập thông qua Safari khi được cài đặt trên một thiết bị

Edit: Vì vậy, sau một chút đào hơn tôi tình cờ này thread stack overflow: FBConnect login, share with a webview?

tôi nhận ra rằng hộp thoại chúng ta đang thấy là một uiWebView vốn thực sự là dự phòng nếu ứng dụng không thể mở hộp thoại trong safari. Tôi đã có thể làm việc xung quanh vấn đề của tôi thiết lập lại giả lập của tôi, mà về cơ bản sẽ làm sạch các tập tin cookie. Từ ảnh chụp màn hình của bạn, tôi tin rằng bạn cũng đang làm việc trong trình mô phỏng. Tôi tự hỏi nếu bạn thiết lập lại các giả lập nếu bạn sẽ có kết quả tương tự?

Từ menu iOS Simulator -> Reset Content and Settings ...

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