我正在更新我的应用程序以使用新的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对象,所以我不确定问题是什么。如果有人能帮助我,那就太好了。感谢。
答案 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];
希望这有帮助!