在授权后不立即调用时,facebook对话框无声地失败

时间:2011-02-24 13:56:03

标签: iphone facebook ios

我有以下功能使用最新的iOS Facebook SDK发布到Facebook。

-(void)fbPost:(NSMutableDictionary *) params{
    NSLog(@"fbPost called");

    if (![facebook isSessionValid]) {
        NSLog(@"session invalid, calling fblogin");

        [self fblogin];
    }
    if ([facebook isSessionValid]) {
        NSLog(@"session valid, calling publishToFB");

        [self.facebook dialog:@"stream.publish" andParams:params andDelegate:self];

    }

}

当没有现有会话时,它工作正常:它登录到Facebook,获取权限,返回应用程序,显示对话框并发布状态。但是,当第二次尝试时,isSessionValid第一次返回true并且没有任何反应,尽管日志显示调用了publishToFB。

会话在fbDidLogin中保留:

[[NSUserDefaults standardUserDefaults] setObject:self.facebook.accessToken forKey:@"AccessToken"];
    [[NSUserDefaults standardUserDefaults] setObject:self.facebook.expirationDate forKey:@"ExpirationDate"];
    [[NSUserDefaults standardUserDefaults] synchronize];

并在应用程序中加载didFinishLaunchingWithOptions:

facebook.accessToken    = [[NSUserDefaults standardUserDefaults] stringForKey:@"AccessToken"];
facebook.expirationDate = (NSDate *) [[NSUserDefaults standardUserDefaults] objectForKey:@"ExpirationDate"];

我确保在登录时请求offline_access权限:

_permissions =  [[NSArray arrayWithObjects:
                      @"publish_stream",@"offline_access",nil] retain];

1 个答案:

答案 0 :(得分:0)

问题出现在FBDialog.m

中的此代码中绘制对话框
UIWindow* window = [UIApplication sharedApplication].keyWindow;
  if (!window) {
    window = [[UIApplication sharedApplication].windows objectAtIndex:0];
  }

如果我注释掉If子句,它就可以了。我想在我的应用程序设置中,“keyWindow”不是最前面的,所以对话框没有出现。