打开Graph Facebbok SDK2.5

时间:2015-12-16 12:15:42

标签: ios facebook facebook-graph-api sdk

我对请求和发送对象的所有开放图形机制感到有点困惑。 目前我正在做以下事情:

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

  

错误Domain = com.facebook.sdk.share Code = 2"操作不能   完成。 (com.facebook.sdk.share错误2。)"的UserInfo = 0x17887f7c0   {com.facebook.sdk:FBSDKErrorDeveloperMessageKey =对不起,这个功能   目前无法使用:处理此错误时出错   请求。请稍后再试。}

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

API不是100%清除tbh。 如果有人可以解释\给一个教程链接\ post示例代码它会很可爱。 感谢

2 个答案:

答案 0 :(得分:1)

您从哪里获得对象的ID?您正在使用的是一个示例对象。您将需要创建(至少)一个真正的Open Graph对象,您可以在代码中使用它来引用。

答案 1 :(得分:1)

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

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

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

对象浏览器是必需的部分。组合框上有“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”字段是字符串,但它表示数字字符串。现在你知道它是怎么样的。