2015-12-16 83 views
1

我对有关请求和发送对象的所有开放图机制有点困惑。 目前我做的是以下几点:Open Graph Facebbok SDK2.5

FBSDKGameRequestContent *gameRequestContent = [[FBSDKGameRequestContent alloc] init]; 
gameRequestContent.message = [SPBLabelUtils stringMessageForKey:@"FacebookAskLivesMessage"]; 
gameRequestContent.recipients = friends; 
gameRequestContent.objectID = @"794790780644074"; 
gameRequestContent.actionType = FBSDKGameRequestActionTypeAskFor; 

FBSDKGameRequestDialog *dialog = [[FBSDKGameRequestDialog alloc] init]; 
dialog.frictionlessRequestsEnabled = TRUE; 
dialog.content = gameRequestContent; 
dialog.delegate = self; 
NSError *error; 
if([dialog canShow] && [dialog validateWithError:&error]){ 
    [dialog show]; 
}else if(error){ 
    [self showAlertForError:error]; 
} 
else{ 
    [self showAlertWithMessage:[SPBErrors messageForCode:@"FBE:CantShowDialog"] title:[SPBLabelUtils stringMessageForKey:@"FacebookTitle"]]; 
} 

,并得到以下错误在我:

- (void)gameRequestDialog:(FBSDKGameRequestDialog *)gameRequestDialog didFailWithError:(NSError *)error

错误域= com.facebook.sdk.share代码= 2“的(com.facebook.sdk.share error 2.)“UserInfo = 0x17887f7c0 {com.facebook.sdk:FBSDKErrorDeveloperMessageKey =对不起,此功能 目前不可用:发生错误同时处理这个 请求。请稍后再试}

我不确定我完全理解objectID的想法 - 我需要在每次需要时都创建一个对象吗? 如果我这样做,是否需要使用'创建代码'并将其链接到包含所有元数据的页面? 每次我为什么要创建一个新的对象?我甚至不需要阅读它,只是为了通知其他玩家他们有一个待处理的对象请求。

该API不是100%清楚tbh。 如果有人可以解释\给教程链接\后的示例代码,它会很可爱。 谢谢

+0

如果FB说这个功能目前不可用,那么我想你会找到另一种方法。 – Ahsen

+0

你有什么想法吗? –

回答

1

你从哪里得到你的对象的ID?你使用的是一个样本对象。您将需要创建(至少)一个真正的Open Graph对象,您可以在代码中使用它来参考。

+1

前段时间我已经解决了,但那是原因。他们的对象创建平台有点马虎...... –

+0

快乐,你修好了!对于将来,您是否可以编辑您的问题或添加答案,以便具有相同问题的其他人可以找到解决方案? – Roemer

+1

是的。我通常这样做。欢呼声 –

1

我已经停止了几个小时。希望有人能在我的回答中找到解决这个问题的方法。

在您的项目设置中,转到facebook上的“打开图表”部分。创建一些对象类型。然后顶部有一个按钮“Tools & support”。

点击后你会看到几个链接,你需要的是“对象浏览器”。

对象浏览器是必需的部分。在“Type:”文本上有组合框,它包含我们之前创建的对象类型。有一个选择类型的按钮“新对象”。

当你将创建新的对象比它获得他的ID。 这就是你正在寻找的对象ID。

可能有更好的方法来找到“对象浏览器”部分。

还有一重要的事情:

FBSDKGameRequestContent *Content = [[ FBSDKGameRequestContent alloc ] init]; 
      Content.title = @"Title test"; 
      Content.message = @"Test message"; 
      Content.data = @"Test data"; 
      Content.objectID = @"1012001268809871"; 
      Content.actionType = FBSDKGameRequestActionTypeAskFor; 
      Content.filters = FBSDKGameRequestFilterAppUsers; 
      fbRequestDialog.content = Content; 
      fbRequestDialog.delegate = self; 
      BOOL Result = [ fbRequestDialog show ]; 

此代码工作正常,我。所以你可以看到“objectID”字段是字符串,但它表示数字字符串。现在你知道它是怎么样的。