2012-03-24 5 views
3

내 iOS 4.3 앱에서 싱글 사인온을 성공적으로 구현했습니다. 이제는 사용자 페이스 북 벽에 대한 링크를 게시하여 앱을 소유 한 친구가 링크를 클릭하면 내 앱으로 리디렉션되어야합니다. 내가 http://developers.facebook.com/docs/mobile/ios/build/#deeplink를 해석하는 방법은, 대리인 중 하나가SSO 페이스 북을 사용한 스토리 링크 흐름 - 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 : //"를 링크 앞에 추가하려고 시도했지만 전혀 작동하지 않습니다. 내가 뭔가 잘못 이해 한거야?

내 앱이 앱 스토어에 아직 게시되지 않았으며 developers.facebook.com에 필드가있어 내 AppStore ID를 입력하라는 메시지가 표시됩니다. 문제가 될 수 있습니까? 그렇다면 해결 방법이 있습니까? AppStore에 내 앱을 전송하기 전에 이것이 정상적으로 작동하는지 테스트하고 싶습니다.

도움 주셔서 감사합니다. 당신이 구현해야

@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에 내부 :

답변

4

당신은 예를 들어 AppDelegate에 당신의 페이스 북의 instace이 필요 당신이 당신의 자신의 클래스에서 프로토콜을 구현하려는 경우

- (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]; 
} 

을 그리고 당신 이것에 관해서 페이스 북에 전화해야한다 :

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

[[fbAppDelegate facebook] authorize:permissions];