第2の更新 もう少し掘り下げてしまえば、もっと大きな問題があるようです。Facebook SDK 3.0ログイン後のIOS 6コールバックは呼び出されません
openURLが起動されない理由は、アプリケーションがフォアグラウンドに戻されたときにフリーズしているように見えることです。
私のアプリを起動したら、ホームボタンをクリックして(ホーム画面に戻る)、アプリを再ロードします(完全再起動ではなく復元のみ)。アプリは開きますが、すべてがフリーズします。
- (無効)applicationWillEnterForeground:(のUIApplication *)アプリケーション
アプリが戻ってきたときに何も起こらないただし後、解雇されます。 IOS 6.0用のシミュレータを使用すると、クラッシュはまったく起こりませんが、アプリは何もしません。画面上をクリックしても何もしません。ホーム画面をクリックするとホーム画面に戻ることができます。
なぜなら、openIURLが起動されないのは、SafariやFacebookのいずれかのアプリからFacebookのログインから戻ったときにアプリがフリーズするためです。それはFacebook SDKとは関係ありません。
どうしてですか?
更新この問題は、openURLが呼び出されていないことに関連しているようです。カスタムURLがSafariやFacebookのアプリから実行されるとアプリが開きます。私が新しいアプリを作ると、それはうまくいく。
別の関連問題application open Url method not called after user authenticates the facebook
私はFacebookのSDK 3.0でFacebookのログインを使用するアプリを持っています。私のアプリデリゲートで
NSArray *permissions = [[NSArray alloc] initWithObjects: @"publish_stream",@"offline_access",@"email",nil];
[FBSession openActiveSessionWithPermissions:permissions allowLoginUI:YES
completionHandler:^(FBSession *session,
FBSessionState status,
NSError *error) {
if(session.isOpen){
NSLog(@"IS LOGGED IN");
}
}];
[permissions release];
の下で、再び
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [[FBSession activeSession] handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [[FBSession activeSession] handleOpenURL:url];
}
を次のようにOpenURLの機能がある:IOS 5意図したとおりの流れが動作し、私はIS LOGGED INの出力を参照しています下の
IOS 5 openURL関数は、facebookを通じたログインが成功した後に呼び出されます。
IOS 6では、openActiveSessionWithPermission(ログイン)を実行すると、openURLが返されることはありません。
私は、これはFacebookのからShireeshであるFacebookのマニュアルに従って、私の.plistファイルに
FacebookAppID = (My Facebook App ID)
と
URL types
-> Item 0
-> URL Schemes
-> Item 0 = (My Facebook App ID)
に応じて私のアプリをアップデートする必要がありました。しかし、私のアプリケーションでは、Appdelegate.mの最初のApp Delegateメソッドがありません。 2番目のものだけ。また、私のチュートリアルのブログ(http://xcodenoobies.blogspot.com/2012/09/how-to-upload-photo-and-update-status.html)でサンプルプロジェクトを見てみたいかもしれません。また、2つのアプリケーション(LiteとProのようなもの)を持っていて、両方のアプリケーションで同じFacebookAppIDを使用すると、クラッシュすることになります。 2つ以上のアプリケーションに同じfbappidを使用したい場合は、いくつか特別なことがあります。(facebook devs wikiを参照してください) – GeneCode
Facebook SDK 2.0でも同じ問題がありますので、iOS 6には関係ありません。 –
By IOS 3.1では非推奨のopenActiveSessionWithPermissionsとなっていますが、それはthat.Youに関連しているとは思われません。公開のためにwithopenActiveSessionWithReadPermissionsとopenActiveSessionWithPublishPermissionsを読む許可を与える必要があります。 –