2012-03-24 58 views
3

我已經在iOS 4.3應用程序中成功實現了單點登錄。現在我想發佈一個鏈接到用戶的臉譜牆,以便當他/她的朋友也擁有該應用程序點擊鏈接,他們應該被重定向到我的應用程序。解讀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]; 
相關問題