iOS6のネイティブ機能や他のFacebook機能を使用するために、以前のFacebook SDKから新しいFacebook SDK 3.1にアプリケーションを変換していましたが、問題が発生していますシミュレータ上では一貫して起こり、デバイス上ではほとんど発生しません。FacebookログインダイアログがiOS6シミュレータで動作しない
私がFacebookにログインすると、SafariやFacebookアプリからのバックグラウンド認証と認証の代わりに、私のアプリの上にモーダルウィンドウが表示されます(これはiOS6で始まりましたFacebook SDK 3.0/3.1へ)。このウィンドウではユーザー名とパスワードを入力できますが、右上の「OK」をクリックして認証すると何も起こりません。コールバックはアプリケーションには発生しません:openURL:sourceApplication:annotation:AppDelegateにあります。
(私は複数のプロジェクトのために使用します)私の共有FacebookControllerコードでFacebookのサンプルコードごとに認可しようとしたとき、私はFBSessionを初期化しています:
FBSession *session = [[FBSession alloc] initWithAppID:nil permissions:readPermissions defaultAudience:FBSessionDefaultAudienceNone urlSchemeSuffix:self.fbUrlSchemeSuffix tokenCacheStrategy:nil];
if(session.state == FBSessionStateCreated || session.state == FBSessionStateCreatedTokenLoaded)
{
[FBSession setActiveSession:session];
// we open after the fact, in order to avoid overlapping close
// and open handler calls for blocks
[session openWithBehavior:FBSessionLoginBehaviorUseSystemAccountIfPresent completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
...
完了のためのコードハンドラは、ダイアログのx cancelボタンをクリックしない限り実行されません(この場合、予期したとおりにエラーが発生します)。
iOSのターゲットプロパティ(info.plist)にFacebookAppIDを設定しており、fb ### [url_scheme_suffix]で設定したURLスキームも持っています。
私のコードとFacebookのサンプルコードとの唯一の違いは、私のアプリの無料版と有料版があるため、URLスキームの接尾辞を使用していることです。
アプリがSafariを使用してログインすると、指定されたコードで動作します。それがFacebookアプリに速く切り替わると、それも機能する。さらに、共有facebook ios6アカウント設定が機能します。アプリでは、アプリ内モーダルを使用する場合にのみ失敗します。
他に誰かがこれに遭遇しましたか?
あなたのアプリとFacebook Appの両方の設定でバンドルIDを指定しましたか? –
Bundle IDはFacebookのAppの設定で設定されています(2つのバージョンのアプリケーションがあるため実際には2つあります)、Bundle IDはアプリのplistに設定されています。 –
'-initWithAppID:permissions ... 'に実際に' nil'をアプリIDとして提供していませんか? –