我使用此代码显示共享对话框:
if (![[FBSession activeSession] isOpen]) {[self login]; return;}
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"name", @"name",
@"caption", @"caption",
@"description", @"description",
@"http://cnn.com", @"link",
@"http://cnn.com/.png", @"picture",
nil];
[FBWebDialogs presentFeedDialogModallyWithSession:nil
parameters:params
handler:
^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
if (error) {
NSLog(@"Error publishing story.");
} else {
if (result == FBWebDialogResultDialogNotCompleted) {
NSLog(@"User canceled story publishing (clicked the 'x' icon)");
} else {
// Handle the publish feed callback
NSLog(@"Handle the publish feed callback");
}
}
}];
我已在Info.plist中添加了适当的条目(根据sdk docs要求):
和处理facebook重定向的AppDelegate方法:
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
// attempt to extract a token from the url
return [FBAppCall handleOpenURL:url
sourceApplication:sourceApplication
fallbackHandler:^(FBAppCall *call) {
NSLog(@"In fallback handler");
}];
}
-(void)applicationWillTerminate:(UIApplication *)application{
[FBSession.activeSession close];
}
我还添加了iOS Facebook 3.5.1 SDK所需的框架:
它提供空对话框(在真实设备和模拟器上),加载指示器永远旋转:
日志中没有显示错误等...我可以轻松解除它(使用正确的处理程序日志)。
我认为FBSession已经启动并正确打开(我可以通过重定向到Safari成功授权并返回应用程序 - 这让我觉得重定向工作正常)。
为什么会这样?我错过了什么?而顺便说一句:为什么没有错误日志?
这是令人沮丧的,因为我之前已多次实施Facebook集成,但在这个应用程序中,我想尝试最新的SDK,其广告为:'变得前所未有的简单'。
答案 0 :(得分:0)
您是否尝试将activeSession设置为Feed对话框的参数?:
//...
[FBWebDialogs presentFeedDialogModallyWithSession:[FBSession activeSession]
parameters:params
handler:
^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
//...
答案 1 :(得分:0)
好的,然后检查您是否有权发布,如果没有,请询问:
if([FBSession.activeSession.permissions indexOfObject:@"publish_actions"] == NSNotFound){
[FBSession.activeSession requestNewPublishPermissions:[NSArray arrayWithObject:@"publish_actions"]
defaultAudience:FBSessionDefaultAudienceEveryone
completionHandler:
^(FBSession *session, NSError *error) {
if (!error) {
//Here call your method to publish again so you have granted the active session has publish permissions.
}
}];
我还没有完成网络订阅源对话框,所以请告诉我它是否适合你。
答案 2 :(得分:0)
尝试ShareKit并按照此处的安装说明进行操作:http://getsharekit.com/install/
它通常可以开箱即用。
答案 3 :(得分:0)
我遇到了同样的问题。但最终这个错误是由params字典中的@“picture”键引起的。所以我的建议是用Facebook示例中的字典取代你的params字典
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"Sharing Tutorial", @"name",
@"Build great social apps and get more installs.", @"caption",
@"Allow your users to share stories on Facebook from your app using the iOS SDK.", @"description",
@"https://developers.facebook.com/docs/ios/share/", @"link",
@"http://i.imgur.com/g3Qc1HN.png", @"picture",
nil];
然后一步一步地弄清楚哪些字典键会导致空白屏幕。
答案 4 :(得分:0)
我在这里遇到了同样的问题。我的解决方案是:
1。在 AppDelegate 上删除[FBAppEvents activateApp];
[FBAppCall handleDidBecomeActive];
来自- (void)applicationDidBecomeActive:(UIApplication *)application
和
来自[FBSession.activeSession close];
的{{1}}
2. 将显示名称与FB Id一起放在info.plist上。
3. 删除旧框架,然后添加新框架v3.15.1(最新版)。请注意将复制项目标记到目标组的文件夹和添加目标。