Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios &引用;无法生成预览文本";使用“打开图形”操作创建对象时出错_Ios_Facebook_Facebook Opengraph_Fbnativedialogs - Fatal编程技术网

Ios &引用;无法生成预览文本";使用“打开图形”操作创建对象时出错

Ios &引用;无法生成预览文本";使用“打开图形”操作创建对象时出错,ios,facebook,facebook-opengraph,fbnativedialogs,Ios,Facebook,Facebook Opengraph,Fbnativedialogs,我正在使用iOSSDK和本机对话框来尝试发布对象和操作 当我使用OpenGraphAction调用presentShareDialogWithOpenGraphAction时,Facebook应用程序将打开,简要显示包含我文章的对话框,然后返回到我的应用程序,并显示错误: 无法生成预览文本 我的代码如下所示: NSDictionary* object = @{ @"fbsdk:create_object": @YES,

我正在使用iOSSDK和本机对话框来尝试发布对象和操作

当我使用OpenGraphAction调用
presentShareDialogWithOpenGraphAction
时,Facebook应用程序将打开,简要显示包含我文章的对话框,然后返回到我的应用程序,并显示错误:

无法生成预览文本

我的代码如下所示:

NSDictionary* object = @{
                         @"fbsdk:create_object": @YES,
                         @"type": @"appsterbator.app_idea",
                         @"title": @"test",
                         @"url": @"http://test.com",
                         };
id<FBOpenGraphAction> action = (id<FBOpenGraphAction>)[FBGraphObject graphObject];
[action setObject:object
           forKey:@"app_idea"];


[FBDialogs presentShareDialogWithOpenGraphAction:action actionType:@"app_idea.create"
                             previewPropertyName:@"app_idea"
                                         handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {
                                          NSLog(@"%@", error);
                                      }];
NSDictionary*对象=@{
@“fbsdk:创建_对象”:@YES,
@“类型”:@“appsterbator.app_idea”,
@“标题”:@“测试”,
@“url”:@”http://test.com",
};
id action=(id)[FBGraphObject graphObject];
[动作集对象:对象
福基:@“app_idea”];
[FBDialogs presentShareDialogWithOpenGraphAction:action actionType:@“app\u idea.create”
previewPropertyName:@“应用程序创意”
处理程序:^(FBAppCall*调用,NSDictionary*结果,NSError*错误){
NSLog(@“%@”,错误);
}];

另外,是否可以发布一个实际上没有URL的开放图形对象?

也有同样的问题。确保基本信息中的应用程序域包含oAuth域。我发现一件奇怪的事情是,为了添加此功能,您需要启用此功能,只有在启用页面选项卡、移动Web或其他选项时才能添加此功能

也有同样的问题。确保基本信息中的应用程序域包含oAuth域。我发现一件奇怪的事情是,为了添加此功能,您需要启用此功能,只有在启用页面选项卡、移动Web或其他选项时才能添加此功能

我有同样的症状,但治疗方法不同。Facebook SDK 3.5.*自共享对话框推出测试版以来

我有一个自定义的对象图故事:解->谜。这是我第一次与OG合作,所以这对熟悉OG的人来说似乎很明显,但它让我停滞不前,我想与大家分享

我在上浏览了共享对话框的示例,但是通过简单的复制粘贴,打开与图形相关的共享将无法工作。我想是因为OG对象与应用程序ID和URL主机等绑定。我设置了我的web主机,以便为我的对象提供OG数据,并将我的应用程序配置为允许该主机等

因此,我开始调整示例代码,以使用“opengraph/stories->Get code”弹出窗口中的参数。将平台设置为iOS SDK,我获得了以下创建操作:

NSMutableDictionary<FBGraphObject> *action = [FBGraphObject graphObject];
action[@"puzzle"] = @"http://samples.ogp.me/463417983744195";

[FBRequestConnection startForPostWithGraphPath:@"me/shapeshuffle:solve"
                               graphObject:action
                         completionHandler:^(FBRequestConnection *connection,
                                             id result,
                                             NSError *error) {
                             // handle the result
                         }];
NSMutableDictionary*action=[FBGraphObject-graphObject];
动作[@“拼图”]=@”http://samples.ogp.me/463417983744195";
[FBRequestConnection startForPostWithGraphPath:@“me/shapeshuffle:solve”
graphObject:动作
completionHandler:^(FBRequestConnection*连接,
身份证结果,
N错误*错误){
//处理结果
}];
我将我的故事和应用程序特定的值交换到示例代码中,导致问题中描述的错误和症状。 我花了比我愿意承认的更长的时间去摆弄托管我的OG对象的服务器、FB应用程序设置、弹出共享对话框的不同方式等等

问题的根源在于弹出对话框时,FB无法将动作和对象与我的应用程序中的配置相匹配-因此,生成预览文本时出现了稍微模糊的错误代码。FB找不到操作,因为“me/shapeshuffle:solve”(获取代码工具中的操作字符串)无法解析。如果我理解了Get Code工具中提供给我的所有不同选项,我可能会避免这种情况,但请记住,我只想弹出一个共享对话框。看起来很简单

通过这个有用的工具,我使用了Graph API explorer,并完成了以下从FB工具获得的字符串到实际工作的映射:

行动: me/shapeshuffle:solve=>shapeshuffle:solve

三个小角色都很痛苦。下面是我完成的代码的样子:

NSString *objectUrl = [NSString stringWithFormat:@"%@puzzleId=%d", @"http://myhost.com/puzzle/object?", puzzleId];

id<FBOpenGraphAction> action = (id<FBOpenGraphAction>)[FBGraphObject graphObject];
    [action setObject:objectUrl forKey:@"puzzle"];
    [action setObject:timeString forKey:@"time"];

[FBDialogs presentShareDialogWithOpenGraphAction:action
                                      actionType:@"shapeshuffle:solve"
                             previewPropertyName:@"puzzle"
                                         handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {
                                             if(error) {
                                                 NSLog(@"Error: %@", error.description);
                                             } else {
                                                 NSLog(@"Success!");
                                             }
                                         }];
NSString*objectUrl=[NSString stringWithFormat:@“%@puzzleId=%d”,@”http://myhost.com/puzzle/object?“,谜语];
id action=(id)[FBGraphObject graphObject];
[action setObject:objectUrl forKey:@“拼图”];
[action setObject:timeString-forKey:@“time”];
[FBDialogs presentShareDialogWithOpenGraphAction:操作
actionType:@“shapeshuffle:solve”
previewPropertyName:@“拼图”
处理程序:^(FBAppCall*调用,NSDictionary*结果,NSError*错误){
如果(错误){
NSLog(@“错误:%@”,错误描述);
}否则{
NSLog(@“成功!”);
}
}];

我有同样的症状,但修复方法不同。Facebook SDK 3.5.*自共享对话框推出测试版以来

我有一个自定义的对象图故事:解->谜。这是我第一次与OG合作,所以这对熟悉OG的人来说似乎很明显,但它让我停滞不前,我想与大家分享

我在上浏览了共享对话框的示例,但是通过简单的复制粘贴,打开与图形相关的共享将无法工作。我想是因为OG对象与应用程序ID和URL主机等绑定。我设置了我的web主机,以便为我的对象提供OG数据,并将我的应用程序配置为允许该主机等

因此,我开始调整示例代码,以使用“opengraph/stories->Get code”弹出窗口中的参数。s
id<FBOpenGraphAction> action = (id<FBOpenGraphAction>)[FBGraphObject graphObject];
[action setObject:@"http://link/" forKey:@"**must_be_lowercase**"];

[FBDialogs presentShareDialogWithOpenGraphAction:action
                                      actionType:@"xxxx"
                             previewPropertyName:@"**must_be_lowercase**"
                                         handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {
                                             if(error) {
                                                 NSLog(@"Error: %@", error.description);
                                             } else {
                                                 NSLog(@"Success!");
                                             }
                                         }];