我有幾個關於新FBSession問題再授權(reauthorizeWithPermissions:在Facebook的SDK 3.0 completionHandler :):行爲的Facebook的iOS SDK 3.0重新授權
一旦有人通過Facebook登錄我的應用程序,在我想用他/她的facebook憑證重新認證用戶的某些頁面。這是爲了確保查看該頁面的人員和發起登錄的人員相同。重新授權的權限與登錄保持一致。我需要的是重新確認用戶的密碼以確保這種情況。
因此,我使用reauthorisationWithPermissions:來做到這一點。我將行爲設置爲FBSessionLoginBehaviorForcingWebView,以確保用戶被迫輸入他/她的憑證。但是,這根本不起作用。它只是彈出一個空白的webview幾秒鐘,然後消失......此時,它調用FBSesstionStateHandler塊的狀態設置爲FBSessionStateOpen,但是,無法調用(completionHandler :)中定義的FBSessionReauthorizeResultHandler。但是,如果我簡單地將行爲設置爲默認(FBSessionLoginBehaviorWithFallbackToWebView),它通過在Facebook應用/ safari之間來回傳遞請求並通過正確調用completionHandler完成調用,可以正常工作。但是,默認行爲並不強制用戶重新輸入他/她的密碼。
所以我真的很困惑,網絡上的sdk文檔對我的情況不是很有用。有人能告訴我我做錯了什麼......或者在SDK中知道它的一個已知錯誤?如果是這樣,我該如何去滿足我的要求?
-(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]];
}
}
此外,一旦重新驗證的Web視圖中正確彈出,我如何確保用戶的電子郵件地址自動填充並阻止用戶不斷變化的形式呢?我可以訪問facebook sdk中的Web視圖來設置這些屬性嗎?
最後,如果re-auth以與登錄相同的權限進行,訪問令牌和失效日期會發生什麼?
在此先感謝,
我想知道同樣的事情;似乎在sdk 3.1中reauthorizeWithPermissions:行爲:completionHandler:方法也被棄用。我 – Kevlar