3

新しい 3.1 フレームワークをテストしています。呼び出す[FBSession openActiveSessionWithReadPermissions:allowLoginUI:completionHandlerと、UIAlertView がどのようにポップされているかを確認できます (ios で Facebook にログインしているため)。

ただし、自分でセッションを作成して呼び出すopenWithCompletionHandlerと、facebook アプリまたは webview にリダイレクトされます (facebook アプリがインストールされているかどうかによって異なります)。

これは壊れていますか?何か不足していますか?

activeSession を使用したくない理由は、urlSchemeSuffix を設定する必要があり、activeSessionでそれを行う方法が見当たらないためです (これらは FBSession の init メソッドでのみ設定されているため)。

ありがとうございました

4

1 に答える 1

2

彼らのコードを見ると、システム アカウントを使用するには特定の動作を設定する必要があるようです (これは FB SDK からのものです)。

+ (BOOL)openActiveSessionWithPermissions:(NSArray*)permissions
                        allowLoginUI:(BOOL)allowLoginUI
                  allowSystemAccount:(BOOL)allowSystemAccount
                              isRead:(BOOL)isRead
                     defaultAudience:(FBSessionDefaultAudience)defaultAudience
                   completionHandler:(FBSessionStateHandler)handler {
    // is everything in good order?
    [FBSession validateRequestForPermissions:permissions
                         defaultAudience:defaultAudience
                      allowSystemAccount:allowSystemAccount
                                  isRead:isRead];
    BOOL result = NO;
    FBSession *session = [[[FBSession alloc] initWithAppID:nil
                                           permissions:permissions
                                       defaultAudience:defaultAudience
                                       urlSchemeSuffix:nil
                                    tokenCacheStrategy:nil]
                      autorelease];
    if (allowLoginUI || session.state == FBSessionStateCreatedTokenLoaded) {
        [FBSession setActiveSession:session];
        // we open after the fact, in order to avoid overlapping close
        // and open handler calls for blocks
        FBSessionLoginBehavior howToBehave = allowSystemAccount ?
                                               FBSessionLoginBehaviorUseSystemAccountIfPresent :
                                               FBSessionLoginBehaviorWithFallbackToWebView;
    [session openWithBehavior:howToBehave
            completionHandler:handler];
    result = session.isOpen;
    }
    return result;
}
于 2012-09-29T00:29:19.610 に答える