Facebook SSOw登录和发布图像不起作用。

时间:2012-08-07 21:48:29

标签: iphone ios facebook login sdk

我会尽可能深入地尝试。我按照Facebook开发网站上的指南进行操作,最后得到了这段代码:

在我的AppDelegate.h中:

@interface AppDelegate : UIResponder <UIApplicationDelegate, FBSessionDelegate> {
...    
Facebook *facebook;
}
@property (nonatomic, retain) Facebook *facebook;

在AppDelegate实现中,我已经指定了facebook appid等。

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

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

}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.menuViewController = [[MenuViewController alloc] init];
    UIView *menuView = self.menuViewController.view;

    facebook = [[Facebook alloc] initWithAppId:@"172938549507285" 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]) {
        [facebook authorize:nil];
    }
    ... 
}

并且只是因为我的应用程序从未关闭我已经实现了相同的方法:

- (void)applicationWillEnterForeground:(UIApplication *)application
{   

    facebook = [[Facebook alloc] initWithAppId:@"172938549507285" 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]) {
        [facebook authorize:nil];
            NSLog(@"Facebook session is not valid");
    }
    NSLog(@"Application Entering Foreground.. setting segue to login flag");
    [defaults setObject:@"yes" forKey:@"shouldgotologin"];
    [defaults synchronize];

}

然而,即使在实施了所有这些之后,我也永远不会打开facebook登录窗口...它永远不会出现......它曾经出现过......但我现在从未在控制台日志中看到任何内容....我真的不知道为什么......我很失落。有人能帮我吗?请不要指引我去Facebook开发网站...这就是我刚刚来自感谢的地方!

2 个答案:

答案 0 :(得分:1)

调试代码。

正如克里斯所说,你现在已登录。

if(![facebook isSessionValid]){

}

在此处放置一个else块,以确认您已经登录或者转移到下一个viewcontroller。

答案 1 :(得分:0)

这听起来像是一个愚蠢的问题,但你说你只看过一次......你确定你现在不是刚刚登录的吗?

如果你卸载并重新安装应用程序,你会再次看到它吗?