Feed对话框无法在iOS SDK 3.0 beta上运行(API错误代码110)

时间:2012-07-30 21:21:12

标签: dialog feed facebook-ios-sdk

我正在更新我的应用程序以使用新的Facebook SDK for iOS(3.0)。但是,我遇到了尝试使用Feed对话框的问题。我按照Facebook开发者网站上的instructions关于如何将Feed对话框与新SDK一起使用,但是当我显示对话框时出现此错误:

  

API错误代码:110
  API错误说明:无效的用户ID
  错误消息:缺少用户cookie(以验证会话用户)

这是我的代码:

Facebook *facebook = [[Facebook alloc] initWithAppId:FBSession.activeSession.appID andDelegate:nil];

facebook.accessToken = FBSession.activeSession.accessToken;
facebook.expirationDate = FBSession.activeSession.expirationDate;

NSMutableDictionary *feedParams = [[NSMutableDictionary alloc] init];

[feedParams setObject:self.video.alternateLink.href
               forKey:@"link"];
// link title = video title
[feedParams setObject:self.video.title.stringValue
               forKey:@"name"];
// link picture = video thumbnail
[feedParams setObject:self.video.mediaGroup.highQualityThumbnail.URLString
               forKey:@"picture"];

NSDictionary *privacyDict = [NSDictionary dictionaryWithObjectsAndKeys:@"CUSTOM", @"value", @"SELF", @"friends", nil];
SBJSON *jsonWriter = [[SBJSON alloc] init];

[feedParams setObject:[jsonWriter stringWithObject:privacyDict error:NULL]
               forKey:@"privacy"];

[jsonWriter release];

[facebook dialog:@"feed"
       andParams:feedParams
     andDelegate:self];

[feedParams release];

self.facebook = facebook;
[facebook release];

这似乎是一个身份验证问题,但我将有效的访问令牌传递给Facebook对象,所以我不确定问题是什么。如果有人能帮助我,那就太好了。感谢。

1 个答案:

答案 0 :(得分:2)

如您所示,在与旧版Facebook类集成时,您可以使用FBSession.activeSession。当您使用activeSession而不是直接实例化会话对象时,一个可能的问题是它可能无法打开。这是一个简单的示例,显示了将Facebook类与活动会话集成的表单:

if (FBSession.activeSession.isOpen) {
    // Create a Facebook instance
    Facebook *facebook = [[Facebook alloc] initWithAppId:FBSession.activeSession.appID
                                             andDelegate:nil]; // commonly self

    // Set the session information for the Facebook instance
    facebook.accessToken = FBSession.activeSession.accessToken;
    facebook.expirationDate = FBSession.activeSession.expirationDate;

    // Put together the dialog parameters
    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   @"I'm using the the Facebook SDK for iOS", @"name",
                                   @"Facebook for iOS", @"caption",
                                   @"Check out the Facebook SDK for iOS!", @"description",
                                   @"https://developers.facebook.com/ios", @"link",
                                   @"http://www.facebookmobileweb.com/hackbook/img/facebook_icon_large.png", @"picture",
                                   nil];

    // Invoke the dialog
    [facebook dialog:@"feed" andParams:params andDelegate:nil];

    [facebook release];
}

如果活动会话未打开,那么您将看到所见的失败。按照以下方式进行的调用,在逻辑的前面某处解决了这个问题:

[FBSession openActiveSessionWithAllowLoginUI:YES];

希望这有帮助!