Facebook iOS SDK 3.5模式提要对话框在iPhone中加载为空
我使用以下代码显示共享对话框:Facebook iOS SDK 3.5模式提要对话框在iPhone中加载为空,iphone,ios,facebook,sdk,facebook-ios-sdk,Iphone,Ios,Facebook,Sdk,Facebook Ios Sdk,我使用以下代码显示共享对话框: if (![[FBSession activeSession] isOpen]) {[self login]; return;} NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: @"name", @"name",
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文档需要):
以及处理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,它的广告是:“前所未有的简单”。您是否尝试将activeSession设置为提要对话框的参数
//...
[FBWebDialogs presentFeedDialogModallyWithSession:[FBSession activeSession]
parameters:params
handler:
^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
//...
好的,然后检查您是否有发布权限,如果没有,请请求:
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.
}
}];
我还没有完成web提要对话框,请告诉我它是否适合您。尝试按照此处的安装说明进行操作:
它通常是开箱即用的。我也遇到过同样的问题。但最终这个错误是由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];
然后一步一步地找出字典中哪些键会导致空白屏幕。在这里,我遇到了同样的问题。我的解决办法是: 1.在AppDelegate上删除
[FBAppEvents activateApp];
[FBAppCall handleDidBecomeActive]代码>
从-(无效)应用程序IDBECOMEACTIVE:(UIApplication*)应用程序
和
[FBSession.activeSession close]来自-(void)应用程序的代码>也将终止:(UIApplication*)应用程序
2.将显示名称与FB Id一起放在info.plist上
3.删除旧框架,然后添加新框架v3.15.1(最新版本)。请记住标记将项目复制到目标组的文件夹中,并添加目标 您是否已将FacebookDisplayName参数添加到plist文件中?检查这里的升级文档:另外,你能将你的代码与我们做同样事情的任何示例进行比较吗。SDK中有几个示例,然后您可以查看单独的how-to's here()。是的。我已将FacebookDisplayName和FacebookAppID添加到info.plist。我使用基于iOS SDK示例的代码片段。如果你有一个有效的会话,它会重现吗?另外,如果要通过nil会话,则必须在webview上进行身份验证,对吗?在webview登录后,您会看到这个空白屏幕?是的,我已正确验证并成功重定向回应用程序,然后在两种情况下我都会看到这个黑色模式共享屏幕:当我在[FBSession activeSession]会话中通过nil时。无论如何都应该是一样的。在移动设备上有相同的问题,而不是在模拟器上。我更喜欢不使用ShareKit的解决方案。是的,我在解决此问题的第一次尝试中尝试过它。它可能不是直接的解决方案,但在与此问题斗争太久之后,我决定(绝望地)听从您的建议。它就像一个魔咒,我免费获得了twitter和其他分享选项。