我正在尝试做一些似乎比必要更难的事情。
我有一个针对Parse后端编写的iOS应用程序。我们的应用程序的用户可以创建要存储的项目,他们有时可以为这些项目生成警报。
我想向Facebook发布一个简单的警告提醒。
我在Facebook网站上已经阅读了很多关于将Facebook整合到iOS中的内容,但他们的文档令人困惑,我在StackOverflow上看到不止一个人提到他们的iOS代码至少有时会有缺陷。
基本上,自定义故事将包含以下内容:
我会事先承认我是一名正在为工作目的学习Facebook的开发人员,而且我远非成为Facebook的专家。
当我在Facebook应用程序中玩游戏时,我可以添加一个状态更新,其中包括:
但是,在Facebook SDK中,似乎只有以下2个选项可用于发布状态更新:
startForPostStatusUpdate:completionHandler:
startForPostStatusUpdate:place:tags:completionHandler:
如果我在那里遗漏了什么,请告诉我。
其次,我正在尝试按照Facebook的文档和示例代码执行以下事件序列:
以下是我从Facebook网站拼凑的代码(评论主要来自其他人的代码,而不是我自己的代码):
- (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帐户登录。如果我转到我的活动日志,我可以看到我要发布的项目。如果我去看我的照片,我可以看到我试图上传的照片。如果我从我妻子的应用程序/帐户查看我的个人资料,它就不会显示。
有没有人有能够做我想要的工作代码?
答案 0 :(得分:1)
也许您需要将“fb:explicit_shared”设置为“true”,并且应该由Facebook审核。
审核通过后,您可以添加如下选项。
[post setObject:@"true" forKey:@"fb:explicitly_shared"];