Câu hỏi Ủy quyền lại cho iOS SDK của Android 3.0


Tôi có một vài câu hỏi về việc ủy ​​quyền lại FBSession mới (reauthorizeWithPermissions: behavior: completionHandler :) trong facebook sdk 3.0:

Khi ai đó đã đăng nhập qua facebook trên ứng dụng của tôi, trên một số trang tôi muốn xác thực lại người dùng bằng thông tin đăng nhập facebook của họ. Điều này là để đảm bảo rằng người đang xem trang và người đã đăng nhập, đều giống nhau. Các quyền cho quyền tái xác nhận vẫn giống như đăng nhập. Tất cả những gì tôi cần là xác nhận lại mật khẩu của người dùng để đảm bảo trường hợp này.

Do đó tôi đang sử dụng reauthorisationWithPermissions: để làm điều này. Và tôi đang thiết lập hành vi như FBSessionLoginBehaviorForcingWebView để đảm bảo rằng người dùng buộc phải nhập thông tin đăng nhập của họ. Tuy nhiên, điều này không hoạt động chút nào. Nó chỉ đơn giản là bật lên một webview trống cho một vài giây và sau đó biến mất ... Tại thời điểm này, nó gọi khối FBSesstionStateHandler với nhà nước thiết lập để FBSessionStateOpen, tuy nhiên, không gọi FBSessionReauthorizeResultHandler được xác định trong (completionHandler :).

Tuy nhiên, nếu tôi chỉ đơn giản đặt hành vi thành mặc định (FBSessionLoginBehaviorWithFallbackToWebView), nó hoạt động tốt bằng cách chuyển yêu cầu qua lại giữa ứng dụng facebook / safari và hoàn thành cuộc gọi bằng cách gọi hàm completionHandler đúng cách. Tuy nhiên, với hành vi mặc định, nó không buộc người dùng phải nhập lại mật khẩu của mình.

Vì vậy, tôi thực sự bối rối, và các tài liệu sdk trên web không phải là rất hữu ích cho trường hợp của tôi. Ai đó có thể xin vui lòng tư vấn cho tôi về những gì tôi đang làm sai ... hoặc thời tiết một lỗi được biết đến trong SDK? Nếu vậy, làm thế nào tôi có thể đi về đáp ứng yêu cầu của tôi?

-(void) reauthThroughFacebook {

if ( !self.facebookSession.isOpen && self.facebookSession.state == FBSessionStateCreatedTokenLoaded) {
    [self.facebookSession openWithBehavior: FBSessionLoginBehaviorWithNoFallbackToWebView 
                         completionHandler: self.stateHandler];
} 

if ( self.facebookSession.isOpen ) {
    [self.facebookSession reauthorizeWithPermissions: self.userPermissions
                                            behavior: FBSessionLoginBehaviorForcingWebView
                                   completionHandler:^(FBSession *session, NSError* error){
                                       if (self.facebookSession == session) {
                                           [self completedReauthWithSuccess:(error == nil) error:error];
                                       }
                                   }];
} else {
    [self completedReauthWithSuccess:NO error:[NSError errorWithDomain: @"No active session found."
                                                                  code: FBErrorInvalid userInfo: nil]];
}

}

Ngoài ra, khi chế độ xem web đẹp mắt bật lên chính xác, làm cách nào để đảm bảo rằng địa chỉ email của người dùng được tự động điền và chặn biểu mẫu người dùng thay đổi nó? Tôi có thể truy cập chế độ xem web trong sdk facebook để đặt các thuộc tính này không?

Cuối cùng, điều gì sẽ xảy ra với mã thông báo truy cập và ngày hết hạn nếu việc xác thực lại diễn ra với cùng các quyền như đăng nhập?

Cảm ơn bạn trước,


8
2017-09-06 12:14


gốc


Tôi tự hỏi điều tương tự; có vẻ như trong sdk 3.1 reauthorizeWithPermissions: behavior: completionHandler: phương thức cũng bị phản đối. Tôi là - Kevlar


Các câu trả lời:


Đây là một câu hỏi thú vị. Tôi đã không mã hóa nó vì vậy tôi không biết nếu điều này sẽ làm việc nhưng cho làm thế nào FB phiên làm việc, đây là dự đoán tốt nhất của tôi tại một cách tiếp cận.

Sử dụng một phiên FB, tôi không nghĩ rằng bạn có thể làm điều này. Trong một phiên cụ thể, FB auth là nhị phân, hoặc người dùng đã đăng nhập (tức là có phiên mở) hay không. Các phương pháp reauth khác nhau đã được dự định để auth với các điều khoản bổ sung và hiện đang bị phản đối trong lợi của các phương pháp để yêu cầu quyền bổ sung.

Bạn có thể thực hiện điều gì đó gần với những gì bạn muốn bằng cách hỗ trợ nhiều phiên FB. Quyền xác thực thứ hai về cơ bản giống như cho phép người dùng FB thứ hai đăng nhập vào ứng dụng của bạn. Sau đó, bạn sẽ đóng phiên thứ hai vào thời điểm thích hợp. Bạn có thể thực thi cả hai phiên là cùng một người dùng FB bằng cách so sánh ID người dùng FB.

Trong đoạn cuối của Hiểu phiêndoc, FB thảo luận về hỗ trợ nhiều phiên.


0
2018-04-17 01:56