6

新しい facebook-ios-sdk 3.0 (以前のバージョン、2.x など) を使用するようにコードベースをオーバーホールしました。

SDK の以前の実装でアプリのアクセス許可を既に付与している/ログインしているユーザーを考慮していないことに気付くまで、すべてがうまく機能しました。そこで、accessToken が NSUserDefaults に保存されているかどうかを確認してみました。保存されている場合は、セッションを開く呼び出しを行います。

    if ([[NSUserDefaults standardUserDefaults] objectForKey:@"FBAccessTokenKey"] &&
        [[NSUserDefaults standardUserDefaults] objectForKey:@"FBExpirationDateKey"]) {
        [FBSession openActiveSessionWithPermissions:permissions
                                       allowLoginUI:allowLoginUI
                                   completionHandler:^(FBSession *session,
                                                       FBSessionState status,
                                                       NSError *error) {
         // deal with state change
         }

私の推測では、ユーザーは既に SSO を持っていたので、SSO のためにアプリの切り替えを高速化する必要はありませんでした。しかし、それは実際に起こることです。

アップグレード時に既存のすべてのユーザーが再ログインする必要はありません。

再ログインせずにアップグレードに成功した人はいますか?

ありがとう

4

2 に答える 2

2

Facebook SDK 3.0 でアプリをアップグレードしましたが、問題なく動作しました。Facebook SDK はトークン自体を処理しますが、引き続き accessToken にアクセスできます。

次のようにいつでもアクセスできます。

NSString *accessToken = [FBSession activeSession].accessToken;

これは accessToken を返すか、トークンが設定されていない場合は nil を返します。セッションでトークン キャッシング ルールセットを定義することもできます。楽しみ。

于 2012-09-24T16:43:02.133 に答える
1

答えは、私の同僚による別の投稿にあります。ユーザーが再ログインする必要なく、ユーザーを SDK pre 3.0 から 3.1 にアップグレードすることができました。これには、FBSessionManualTokenCachingStrategy の使用が含まれます。

iOS Facebook 2.x -> 3.x からの移行時にユーザーのログアウトを回避する方法

于 2012-11-16T00:45:11.967 に答える