2012-12-05 36 views
5

Tôi đang sử dụng Facebook iOS SDK mới nhất, 3.1.1. Tôi muốn cung cấp cho người dùng tùy chọn "ngắt kết nối" ứng dụng của chúng tôi từ Facebook. Tôi gọi:Ngắt kết nối Facebook khỏi ứng dụng trên iOS6?

[[FBSession activeSession] closeAndClearTokenInformation]; 

Đó dường như làm việc tốt, nhưng thời gian sau, tôi gọi

[FBSession openActiveSessionWithReadPermissions:allowLoginUI:completionHandler:handler]; 

nó ngay lập tức mang lại cho tôi một mã thông báo, mà không yêu cầu người dùng phải đăng nhập lại. Tôi hy vọng nó sẽ yêu cầu người dùng một lần nữa để xác thực. Nếu không có tài khoản Facebook được thiết lập trên thiết bị, nó hoạt động tốt, bởi vì nó sẽ mở trình duyệt web nơi nó cho người dùng biết họ đã xác thực ứng dụng và hiển thị nút 'OK'. Nhưng nếu nó được thiết lập, nó chỉ âm thầm nhận được mã thông báo một lần nữa và do đó, người dùng "ngắt kết nối" các ứng dụng không có hiệu lực.

Có ai khác có vấn đề này không và bạn xử lý vấn đề như thế nào?

Trả lời

2

Nó không hỏi lại vì SDK iOS đã cấp cho Facebook SDK một mã thông báo truy cập hợp lệ. Đây chỉ là cách Apple thiết kế các khung công tác Facebook (và Twitter) của họ. Không có gì bạn có thể làm về nó. Cá nhân tôi nghĩ nó thật tuyệt. Người dùng chỉ phải nói với điện thoại của họ khi họ chấp nhận một ứng dụng.

Cũng lưu ý rằng mã thông báo được lưu trong bộ nhớ cache có thể đã hết hạn. Hiện tại, SDK của Facebook không xử lý hoàn toàn trường hợp SDK iOS cung cấp cho nó một mã thông báo đã hết hạn.

Nếu bạn muốn kiểm tra thì bạn có thể xóa tài khoản Facebook trên thiết bị của mình và thêm lại. Điều đó sẽ xóa mã thông báo được lưu trong bộ nhớ cache.

+0

Cảm ơn, nó trái ngược với cách chúng tôi thiết lập mọi thứ trong ứng dụng của chúng tôi nhưng tôi đoán nó có ý nghĩa. – igalic

+0

Không quan tâm, tại sao bạn quan tâm đến việc nó luôn hỏi? Tại sao nó lại quan trọng? – mattjgalloway

+0

Xin lỗi mattjgalloway, tôi không thấy bình luận của bạn. Lý do là người dùng có thể do dự khi cấp quyền cho ứng dụng khi họ mới bắt đầu sử dụng ứng dụng đó. Có lẽ họ thử mọi thứ, kích hoạt hành động Facebook, nhưng sau đó từ chối truy cập. Sau đó khi họ sử dụng ứng dụng nhiều hơn và bắt đầu tin tưởng nó, có lẽ họ sẽ cho phép nó truy cập vào tài khoản Facebook của họ, nhưng nó sẽ không bao giờ hỏi lại. – igalic

0

Sử dụng:

- (void)openWithBehavior:(FBSessionLoginBehavior)behavior completionHandler:(FBSessionStateHandler)handler; 

với FBSessionLoginBehaviorForcingWebView như hành vi giải quyết vấn đề của tôi. Nó mở hộp phương thức đăng nhập và quên cookie của người dùng.

+0

Cảm ơn, nhưng không may điều đó có nghĩa là bạn cần hoàn toàn bỏ qua tài khoản Facebook được tích hợp sẵn mà tôi muốn tránh. Trong thời gian chờ đợi, chúng tôi đã quyết định bỏ qua nút 'đăng xuất'. Nếu bạn muốn, bạn luôn có thể làm điều đó từ cài đặt hệ thống. – igalic

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