0

これは非常に奇妙です。Facebook にログインしようとしていますが、デバイスに Facebook アプリがインストールされていなければ、すべて正常に動作しています。でも、このアプリがあれば何も起こりません。何もない。完了ブロックは呼び出されず、ログイン ダイアログは表示されません。これは私の非常に単純なコードです:

[PFFacebookUtils logInInBackgroundWithReadPermissions:@[@"public_profile"] block:^(PFUser *user, NSError *error)
 {
     NSLog(@"Completion");

 }];

内部にもこのコードがありますapplicationDidFinishLauncing

[Parse setApplicationId:kPAParseApplicationId clientKey:kPAParseClientKey];    
[PFFacebookUtils initializeFacebookWithApplicationLaunchOptions:launchOptions];

そして、私は次のメソッドを実装しています:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
  return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                   openURL:url
                                         sourceApplication:sourceApplication
                                                annotation:annotation];

}

また、次の点にも注意する必要があります。ごくまれに、アプリがインストールされていても機能することがあります。動作し、その後何らかの理由で動作を停止します。誰もそのような問題に遭遇しましたか?ありがとう!

4

1 に答える 1

0

私はそれを理解しました。問題は Facebook SDK 自体にあり、なんとか修正できました。Facebookアプリがインストールされているかどうかは関係ありません。

幸いなことに、FBSDKLoginKitオープンFBSDKCoreKitソースであるため、問題を突き止めることができました。そのため、サーバーFBSDKLoginManagerからロードされたアクティブな SDK 構成がある場合にのみログインを許可しFacebookます。そうでない場合は、開発者を助けるためにエラー メッセージを記録することさえせずに、単に何もしません。では、アクティブな構成がない場合がある理由は何ですか。その理由は、メインの実行ループでFBSDKURLConnectionスケジュールされていないためです。NSURLConnectionしたがって、そのstartメソッドがバックグラウンド スレッドで呼び出された場合、NSURLConnectionデリゲート メソッドが呼び出される場合と呼び出されない場合があります。そうでない場合は、新しい構成が読み込まれず、ログインできません。だから私がしたことは、単に次のようにFBSDKURLConnectionstartメソッドを変更することでした:

- (void)start
{
    [_connection scheduleInRunLoop:[NSRunLoop mainRunLoop]
                      forMode:NSDefaultRunLoopMode];
    [_connection start];
}

そして今、それは動作します

于 2016-04-12T09:09:01.023 に答える