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 iOS sdk 自定义委托和 SSO 授权
对于使用 Facebook iOS SDK 的混合 SSO 场景,为我们自己的自定义用户记录生成密码/密钥的最佳方式是啥?