我正在尝试使用Facebook iOS“提要”对话框来允许我的应用用户在他们的Facebook墙上分享内容。当未安装Facebook应用程序时,它会尝试让他们在应用程序中进行身份验证(可能是使用Web视图)。问题是这个对话框一旦验证就会消失。我期待Web视图返回到“feed”共享视图。
如何检测到他们已通过身份验证,以便重新打开Feed对话框?
我已将fbDidLogin添加到我的app委托,但它没有被调用。 (我不确定这通常是否会被调用,但我读了几个人推荐这个。)
SBJSON *jsonWriter = [SBJSON new];
// The action links to be shown with the post in the feed
NSArray* actionLinks = [NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys:
@"More Videos",@"name",@"http://www.example.com/",@"link", nil], nil];
NSString *actionLinksStr = [jsonWriter stringWithObject:actionLinks];
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"Test Caption", @"caption",
@"Test Description", @"description",
@"https://s3.amazonaws.com/example/images/test.png",
@"source",
self.video.blogLink, @"link",
@"01234567890123", @"app_id",
actionLinksStr, @"actions",
nil];
[delegate facebook].sessionDelegate = delegate;
[[delegate facebook] dialog:@"feed" andParams:params andDelegate:self];
答案 0 :(得分:1)
事实证明,问题与报告对话框立即消失的问题相同。 Facebook SDK中存在关于处理错误-999 with the solution described in this comment on SO。
的错误当我开始收听FBDialogDelegate的方法时,我终于意识到我遇到了同样的问题(尽管表现略有不同):
- (void)dialog:(FBDialog*)dialog didFailWithError:(NSError *)error
错误描述引用了上面提到的-999错误,引出了我的答案。幸运的是,检查到github的代码完美无缺。我只需将其拉入SDK代码库并重新编译.a lib文件,然后将其包含在我的项目中。
答案 1 :(得分:0)
您是否在视图控制器中实现了Facebook协议FBSession? 要检测该用户是否已通过身份验证,您必须调用isSessionValid:
if (![[self.fbAppDelegate facebook] isSessionValid]) {
NSArray *permissions = [[NSArray alloc] initWithObjects:@"publish_stream",@"create_event",@"offline_access", nil];
[[self.fbAppDelegate facebook] authorize:permissions];
}
并授权inApp:
[self authorizeWithFBAppAuth:NO safariAuth:NO];