2012-03-24 12 views
3

iOS 4.3アプリでシングルサインオンを実装しました。今では、ユーザーのFacebookブックウォールへのリンクを公開して、自分の友だちがリンクをクリックして自分のアプリにリダイレクトされるようにしたいと考えています。私はhttp://developers.facebook.com/docs/mobile/ios/build/#deeplinkを解釈する方法は、デリゲートの機能の一つSSOのfacebookを使ったストーリーリンクの流れ - openURLが呼び出されない

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url, (pre iOS 4.2) 
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url 
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation , (iOS 4.2+) 

が呼び出され、共有リンクは[TARGET_LINK]キーから解析することができることになるされていること。しかし、私はこれを動作させることはできません。私のニュースフィードに表示されますが、私がクリックしたときに、上記のデリゲートメソッドのリンクどれも呼ばされていない

NSDictionary* params=[[NSDictionary alloc] initWithObjectsAndKeys:myFacebookAppID,@"app_id", 
linkToPost,@"link",nil]; 
[_facebook dialog:@"feed" andParams:params andDelegate:self] 

ポスト:私は正常に使用して、ユーザーのニュースフィードに私のリンクを投稿します。私はリンクで特別なことをする必要がありますが、私はリンクの前に "fb:myFacebookAppID://"を追加しようとしましたが、全く動作しません。私は何かを誤解したことがありますか?

私のアプリはAppStoreにはまだライブされてお​​らず、developers.facebook.comにフィールドがあり、どこにAppStore IDを入力する必要がありますか?もしそうなら、回避策はありますか?私はAppStoreに私のアプリを送る前に、これがうまくいくかどうかテストしたい。

ありがとうございました!

答えて

4

あなたが例えばAppDelegateで自分のFacebookのinstaceを持っている必要があります:

@interface FacebookAppDelegate : UIResponder <UIApplicationDelegate> 

@property (strong, nonatomic) UIWindow *window; 

@property (strong, nonatomic) UINavigationController *navigationController; 
@property (nonatomic, strong) Facebook *facebook; 

@end 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary  *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 
    self.viewController = [[FacebookViewController alloc] initWithNibName:@"FacebookViewController" bundle:nil]; 

    self.facebook = [[Facebook alloc] initWithAppId:kAppId andDelegate:(id)self.viewController]; 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults objectForKey:@"FBExpirationDateKey"]) { 
     self.facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; 
     self.facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; 
    } 

    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

そしてAppDelegate内であなたが実装する必要があります。

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
    return [self.facebook handleOpenURL:url]; 
} 

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
    return [self.facebook handleOpenURL:url]; 
} 

をそして、あなたはあなた自身のクラスであなたをプロトコルを実装する場合これについてFacebookに電話してください:

FacebookAppDelegate *fbAppDelegate = (FacebookAppDelegate *)[[UIApplication sharedApplication] delegate]; 
NSArray *permissions = [[NSArray alloc] initWithObjects:@"publish_stream",@"create_event",@"offline_access", nil]; 

[[fbAppDelegate facebook] authorize:permissions]; 
関連する問題