これは重複しているように見えるかもしれませんが、問題を中心としたすべての質問に答えましたが、それでもアプリでこれを機能させることができないようです。
Facebook DeveloperサイトのiOSチュートリアルに従い、次のことを行いました。
- FacebookアプリIDを取得するためのFacebookアプリを作成しました。
- このアプリIDを定数に割り当て、それを使用してアプリ内のFacebookオブジェクトを初期化します。
- アプリにマルチタスクのフラグが設定されていることを確認しました
- URLドロップダウンの下のplistにfbAPP_IDを設定しました
- AppDelegateをFBSessionDelegateにし、非常に単純なfbDidLoginおよびfbDidNotLoginデリゲートメソッドを実装しました。
バージョン:LionのXCode 4.3.2、iOS 5.1、Facebook iOS 4.1.1
これらすべてと私はまだ、Facebookが承認したときにアプリに制御を戻すようにさせることができないようです。代わりにFacebookにとどまります。
コード:(ここで表示するためにFB_APP_IDが基本番号に変更されていることに注意してください)
AppDelegate.h:
#import <UIKit/UIKit.h>
#import "FBConnect.h"
#define FB_APP_ID @"1234567890"
@interface AppDelegate : UIResponder <UIApplicationDelegate, FBSessionDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (nonatomic, strong) Facebook* facebook;
@end
AppDelegate.m:
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize window = _window;
@synthesize facebook = _facebook;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
_facebook = [[Facebook alloc] initWithAppId:FB_APP_ID andDelegate:self];
if (![_facebook isSessionValid])
{
[_facebook authorize:nil];
}
}
- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL *)url
{
return [_facebook handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [_facebook handleOpenURL:url];
}
- (void)fbDidLogin
{
NSLog(@"App logged in");
}
- (void)fbDidNotLogin:(BOOL)cancelled
{
NSLog(@"App did not login");
}
@end
関連するInfo.plistポートン:
Facebookアプリの画面(ほとんどがピンク色になっています):
注:基本設定のみで試してみました。また、偽のiTunesストアIDを使用してiOSネイティブアプリの設定を試してみましたが、プロビジョニングプロファイルのバンドルIDは同じです。
私が何をしても、常にFacebookが読み込まれ、アプリの承認を求められます。その後、アプリに戻るのではなく、認証画面ウィンドウを閉じてFacebook画面に表示されます。
また、注意:認証トークンと有効期限をチェックしていないため、常に尋ねられることはわかっています.....それが次のステップです....今のところ、少なくとも前にアプリに戻してもらいたいです心配です。
私はここで何かを逃したことがありますか?Facebookを自分のアプリに戻してもらうために他に何かできることはありますか?
編集:また、デバッグ時に、何らかの理由でどちらかのopenURLが呼び出される場所が見つからないようです。
編集#2:シミュレーターで実行すると、Safari経由でFBダイアログが読み込まれ(期待どおり)、承認すると、safariは、アプリに戻るために使用しようとしているURLが無効であるかのようにエラーをスローします:
私のfb1234567890は、Info.plistで私が知っている限り正しくセットアップされているので、これはまだ多くを教えてくれません。