2012-09-06 16 views
8

私は新しいFBSessionのreauthorisation(reauthorizeWithPermissionsについての質問のいくつかあります:誰かが上、私のアプリにFacebook経由でログインした後はのFacebookのiOS SDK 3.0再認証

:行動:completionHandler :) FacebookのSDK 3.0での特定のページ私は彼/彼女のFacebookの資格情報でユーザーを再認証したいと思います。これは、ページを閲覧している人とログインしている人が同じであることを確認するためです。再認証の権限はログインと同じです。私が必要とするのは、このケースを確実にするためにユーザーのパスワードを再確認することだけです。

したがって、私はreauthorisationWithPermissionsを使用しています:これを行うには。私はFBSessionLoginBehaviorForcingWebViewとして振る舞いを設定して、ユーザーが自分の資格情報を入力するように強制しています。しかし、これはまったく機能しません。このとき、FBSessionStateOpenに設定された状態でFBSesstionStateHandlerブロックを呼び出しますが、(completionHandler :)内で定義されたFBSessionReauthorizeResultHandlerを呼び出すことはできません。

しかし、単に振る舞いをデフォルト(FBSessionLoginBehaviorWithFallbackToWebView)に設定すると、要求をfacebook app/safari間でやりとりして正常に動作し、completionHandlerを正しく呼び出すことによって呼び出しを完了します。ただし、デフォルトの動作では、ユーザーがパスワードを再入力する必要はありません。

だから私は本当に混乱していて、ウェブ上のSDKのドキュメントには、私の場合のために非常に有用ではありません。誰かが私が間違っていることについて私に助言してもいいですか... SDKの既知のバグを晴らしていますか?もしそうなら、どうすれば私の要件を満たすことができますか? REAUTH Web表示が正しくポップアップしたら

-(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]]; 
} 

} 

また、どのように私は、ユーザーの電子メールアドレスが自動移入されていることを確認し、それを変更するユーザーフォームをブロックするには?これらのプロパティを設定するには、facebook sdk内のウェブビューにアクセスできますか?

再認証は、ログインと同じ権限で行われている場合最後に、何がアクセストークンと有効期限はどうなるの?

ありがとうございました。

+0

私は同じことを思っています。 sdk 3.1では、reauthorizeWithPermissions:behavior:completionHandler:メソッドも非推奨になっているようです。私は – Kevlar

答えて

0

これは興味深い質問です。私はこれをコード化していないので、これがうまくいくかどうかはわかりませんが、FBセッションがどのように機能するかを考えれば、これはアプローチでの私の最高の推測です。

1つのFBセッションを使用して、私はあなたがこれを行うことができるとは思わない。所与のセッション内で、FB認証はバイナリであり、ユーザがログインしている(すなわち、セッションを開いている)か否かを示す。さまざまな再認証メソッドは、追加のアクセス許可を使用して認証することを目的としていたため、追加のアクセス許可を要求するメソッドを使用するようになりました。

複数のFBセッションをサポートすることで、目的に近いものを達成できます。 2次認証は、2番目のFBユーザーがアプリにログインできるようにすることと基本的に同じです。その後、適切な時間に2番目のセッションを閉じます。 FBユーザーIDを比較することにより、両方のセッションが同じFBユーザーであることを強制することができます。

Understanding Sessions文書の最後の段落で、FBは複数のセッションをサポートすることについて説明しています。