2012-04-02 47 views
0

在我的ViewControllerfbdidLogin從來沒有所謂

- (IBAction)loginBtn:(id)sender 
{ 
    facebook = [[Facebook alloc] initWithAppId:@"231190276934148" andDelegate:self]; 

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

    if (![facebook isSessionValid]) { 
     NSArray *permissions = [[NSArray alloc] initWithObjects: 
          @"user_likes", 
          @"user_about_me", 
          @"user_photos", 
          @"friends_about_me", 
          @"friends_activities", 
          @"read_stream", 
          @"publish_stream", 
          nil]; 
     [facebook authorize:permissions]; 
    } 

    NSLog(@"asdoiffijd"); 
} 

- (IBAction)btnRequest:(id)sender 
{ 
    [facebook requestWithGraphPath:@"me/friends" andDelegate:self]; 
} 

- (void)fbDidLogin 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"]; 
    [defaults setObject:[facebook expirationDate] forKey:@"FBExiprationDateKey"]; 
    [defaults synchronize]; 
    NSLog(@"fbDidLogin!"); 
} 

在我的appDelegate

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

我覺得- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation應該fbdidLogin之前被調用,但我無法完成這部分[facebook handleOpenURL:url];

在計算器,[[controller facebook] handleOpenURL:url];將解決問題, ,但我不能這樣做。任何解決方案

回答

0

在他們的文檔中,他們建議您在您的應用程序代理中需要此功能。

https://developers.facebook.com/docs/mobile/ios/build/

當我第一次嘗試這樣做,我把它在我使用的互聯網源交互另一個對象,並沒有奏效。當我將它放入我的應用程序委託中時,它工作正常。我得出結論,當他們說「修改應用程序委託...」時,他們真的表示應用程序委託。

+0

是的..我已經嘗試在AppDelegate,它真的工作。 但我可以在appDelegate中創建FB登錄按鈕嗎? – 2012-04-03 10:25:57

+0

不,但在你的視圖控制器中,你可以有一行說'YourAppDelegate * appDelegate =(YourAppDelegate *)[UIApplication sharedApplication] .delegate;'然後你就可以開始使用你的Facebook對象或其方法。 – Rob 2012-04-03 13:21:33

相關問題