Facebook iOS SDK - 发布自定义故事

Posted

技术标签:

【中文标题】Facebook iOS SDK - 发布自定义故事【英文标题】:Facebook iOS SDK - Post Custom Story 【发布时间】:2015-01-07 00:33:24 【问题描述】:

我正在尝试做的事情似乎比必要的困难一个数量级。

我有一个针对 Parse 后端编写的 ios 应用程序。我们应用的用户可以创建要存储的项目,他们有时可以为这些项目生成警报。

我想向 Facebook 上的用户发布一个简单的提醒。

我在 Facebook 网站上阅读了很多关于将 Facebook 集成到 iOS 中的内容,但他们的文档令人困惑,而且我在 *** 上看到不止一个人提到他们的 iOS 代码至少有时存在缺陷。

基本上,自定义故事将包括以下项目:

    故事标题 故事描述(这里通常没有太多文字) 一张或多张图片(我愿意发布 1 张,但我希望能够发布多张) 如果可能,提供用户提供的 GPS 位置。

我先承认我是一名开发人员,出于工作目的而学习 Facebook,而我远非 Facebook 专家。

当我在 Facebook 应用中玩耍时,我可以添加一个状态更新,其中包括:

    文字 图片 朋友 我在做什么 我在哪里(或某个位置)

但是,在 Facebook SDK 中,发布状态更新似乎只有以下 2 个选项:

startForPostStatusUpdate:completionHandler:
startForPostStatusUpdate:place:tags:completionHandler:

如果我在那里遗漏了什么,请告诉我。

其次,我正在尝试按照 Facebook 的文档和示例代码来执行以下事件序列:

    上传和暂存图片资源 创建一个对象(在我的应用中,我注册了一个“警报”对象) 创建一个操作(在我的应用中,我注册了一个“发布”操作)

这是我从 Facebook 网站拼凑的代码(cmets 主要来自其他人的代码,而不是我自己的):

- (void)postToFacebookWithAlert:(PFObject *)alert image:(UIImage *)image         
    // Stage the image
    [FBRequestConnection startForUploadStagingResourceWithImage:image completionHandler:^(FBRequestConnection *connection, id result, NSError *error) 
        if (error != nil) 
            // See: https://developers.facebook.com/docs/ios/errors                
         else 
            // Package image inside a dictionary, inside an array like we'll need it for the object
            NSArray *image              = @[@@"url": [result objectForKey:@"uri"], @"user_generated" : @"true" ];
            // Create an object
            NSString *caption           = // user-generate content
            NSMutableDictionary<FBOpenGraphObject> *alert;
            alert                       = [FBGraphObject openGraphObjectForPostWithType:@"<myapp>:alert"
                                                                                  title:caption
                                                                                  image:image
                                                                                    url:nil
                                                                            description:alert[@"subtitle"]];
            alert.provisionedForPost    = YES;

            // Post custom object
            [FBRequestConnection startForPostOpenGraphObject:alert completionHandler:^(FBRequestConnection *connection, id result, NSError *error) 
                if (error != nil) 
                    // An error occurred                        
                 else 
                    NSMutableDictionary<FBGraphObject> *post    = [FBGraphObject graphObject];
                    post[@"alert"]                              = result[@"id"];
                    [FBRequestConnection startForPostWithGraphpath:@"me/<myapp>:post" graphObject:post completionHandler:^(FBRequestConnection *connection, id result, NSError *error) 
                        NSLog(@"startForPostWithGraphPath:graphObject:completionHandler:");
                        if (error != nil) 
                            // An error occurred
                            NSLog(@"Encountered an error posting to Open Graph: %@", error);                                
                         else 
                            NSLog(@"OG story posted, story id: %@", result[@"id"]);                                
                        
                    ];
                
            ];
        
    ];        

我实际上已经让这段代码工作了一次。我以我自己的个人 Facebook 帐户登录。如果我转到我的活动日志,我可以看到我正在尝试发布的项目。如果我转到我的照片,我可以看到我正在尝试上传的照片。如果我从我妻子的应用程序/帐户中查看我的个人资料,它不会显示。

有人有我想要的工作代码吗?

【问题讨论】:

ive 从未使用过他们的 SDK(只是直接与他们的 API 交互),但您可以看到的可能是您的 FB 应用程序范围不允许您尝试执行的操作?你也看过任何错误吗?你有一些部分被注释掉了可能出现错误的地方。 @myte 我有,但是,就像我说的,代码实际上“成功地”执行了,但仍然没有像我预期的那样出现。因此,没有要提及的当前错误。 【参考方案1】:

也许您需要将“fb:explicitly_shared”设置为“true”,并且应该由 Facebook 审核。

审核通过后,您可以添加如下选项。

[post setObject:@"true" forKey:@"fb:explicitly_shared"];

【讨论】:

您能告诉我在哪里可以请求该许可吗?因为发布适用于我的个人帐户(这也是我的 facebook 开发者帐户),但不适用于其他人......?!?在 facebook-developer-dashboard 上,我只是看不到在哪里可以要求允许我的应用使用 fb:explicitly_shared?!?

以上是关于Facebook iOS SDK - 发布自定义故事的主要内容,如果未能解决你的问题,请参考以下文章

Facebook SDK iOS 的自定义分享、登录按钮

facebook iOS sdk 自定义委托和 SSO 授权

对于使用 Facebook iOS SDK 的混合 SSO 场景,为我们自己的自定义用户记录生成密码/密钥的最佳方式是啥?

如何在 iOS 版 Facebook SDK 中定义“GeoPoint”属性

自定义like按钮IOS SDK

Facebook iOS SDK 4.2.0 - 分享自托管 Open Graph 故事时出错