Facebook SDK 3.0 の新しい FBSession 再認証 (reauthorizeWithPermissions: behavior: completionHandler:) についていくつか質問があります。
誰かが私のアプリで Facebook 経由でログインしたら、特定のページで、Facebook の資格情報を使用してユーザーを再認証したいと考えています。これは、ページを閲覧している人とログインした人が同じであることを確認するためです。再認証の権限は、ログインと同じままです。このケースを確実にするために必要なのは、ユーザーのパスワードを再確認することだけです。
したがって、これを行うために reauthorisationWithPermissions: を使用しています。また、動作を FBSessionLoginBehaviorForcingWebView として設定して、ユーザーが資格情報の入力を強制されるようにしています。ただし、これはまったく機能しません。空白の Web ビューが数秒間表示されてから消えます... この時点で、FBSessionStateOpen に設定された状態で FBSessionStateHandler ブロックを呼び出しますが、(completionHandler:) 内で定義された FBSessionReauthorizeResultHandler の呼び出しに失敗します。
ただし、単に動作をデフォルト (FBSessionLoginBehaviorWithFallbackToWebView) に設定すると、facebook アプリとサファリの間で要求をやり取りすることで正常に動作し、completedHandler を正しく呼び出して呼び出しを完了します。ただし、デフォルトの動作では、ユーザーにパスワードの再入力を強制しません。
だから私は本当に混乱しています.Web上の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 ビューにアクセスできますか?
最後に、ログインと同じ権限で再認証が行われた場合、アクセス トークンと有効期限はどうなりますか??
前もって感謝します、