通过 Graph API 和 iOS 将照片上传到相册时出现 Facebook 错误:(#1) 发生未知错误

Posted

技术标签:

【中文标题】通过 Graph API 和 iOS 将照片上传到相册时出现 Facebook 错误:(#1) 发生未知错误【英文标题】:Facebook Error while uploading photo to album via Graph API and iOS: (#1) An unknown error occurred 【发布时间】:2011-09-08 02:29:30 【问题描述】:

我看过一些关于这个问题的帖子,但到目前为止似乎没有任何帮助。基本上,我正在编写一个 ios 应用程序并尝试使用 Graph API 将照片发布到 Facebook 相册。图像数据首先从服务器下载,然后发布到 Facebook。我正在使用 ASIFormDataRequest 类和 url https://graph.facebook.com/MY_ALBUM_ID/photos,但我一直收到以下错误:

error =     
    message = "(#1) An unknown error occurred";
    type = OAuthException;
;

我的请求如下所示:

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:url]];
self.photoRequest = request;
[request setDelegate:self];
[request setPostValue:token forKey:@"access_token"];
[request setPostValue:message forKey:@"message"];
[request setTimeOutSeconds:240];
[request setRequestMethod:@"POST"];

UIImage *image = [UIImage imageWithData:data];

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^
    NSData *imageData = UIImageJPEGRepresentation(image, 0.8);
    [request setData:imageData forKey:@"source"];

    dispatch_async(dispatch_get_main_queue(), ^
        [request startAsynchronous];
    );
);

奇怪的是,我使用完全相同的方法将照片上传到我的服务器以用于应用程序的不同部分,并且一切正常。我什至已经将我试图发送到 Facebook 的照片上传到我的服务器,以查看数据是否正确发布。一切顺利。

我读到 Facebook 有时会吐出我看到的错误,如果它的图像格式有问题,但错误本身就很模糊。我知道我的 access_token 是有效的。我向 Facebook 发出的所有其他请求都运行良好。

有什么想法吗?

【问题讨论】:

想过网络相关问题吗?就像因为防火墙?或者图像太大? :) 从谷歌搜索结果中我看到它看起来像一个 HTTP 400,这是一个格式错误的请求...... @Vincent G 这绝对不是与网络相关的问题。作为测试,我使用[UIImage imageNamed:@"imageName"];而不是UIImage *image = [UIImage imageWithData:data];从我的项目中上传了一张随机图像,它发布得很好。我们在我们的服务器上使用 ImageMagick 来生成我要发送的图像。问题似乎在于 ImageMagick 生成的图像数据。 好的,所以问题超出了 ImageMagick 的范围。在 Photoshop 中玩耍并尝试将图像添加到 facebook:有些可以,有些不行。我找不到关于不想上传的特定图像的内容。当我尝试在 facebook 中手动发布它们时,没有从我的应用上传的图像也不会上传。很奇怪。 你设置了请求的mime-type吗?...如果没有,facebook端的格式检测可能会失败?还看到报告称,这可能是来自 facebook 的基于安全的拒绝(例如请求太多...... IP 被列入黑名单......)您可以尝试从另一个 IP/网络进行检查。 【参考方案1】:

好吧,我想通了!

事实上,Facebook 对上传的图片有比例限制。我仍然不确定它们是什么,但就我而言,198x715 图像不符合他们的比例要求。我们联系了我们认识的 Facebook 开发团队中的一个人,他说他们不会更改限制,但他们会为 API 错误添加更好的消息传递。

希望对遇到类似问题的人有所帮助。

【讨论】:

我突然遇到了同样的问题,从八月中旬开始。使用最新的 FB iOS SDK,所有图片上传调用都会失败并返回错误响应 "error":"message":"(#1) An unknown error occurred","type":"OAuthException"。我尝试了不同的图像尺寸,但都失败了。还有什么想法吗?这阻碍了我的客户现在发布主要的 iPad/iPhone 应用程序。也从不同的 IP 尝试过,以防我的家庭 IP 由于某种原因被列入黑名单,但结果相同。 好的,我也发现了我的问题。在我的情况下,上传失败是因为我与上传一起传递的“消息”参数包含一个 http:// 链接(goo.gl 链接到 Apple App Store 中的应用程序)。要么,要么消息值太长。【参考方案2】:

有一个没有记录的图像限制,或者至少我找不到任何东西,当高度大于图像上的宽度时,纵横比限制为 1:3。我做了很多测试来确认这一点,我可以向你保证这是今天的限制。

【讨论】:

【参考方案3】:

如this answer 中所述,当您的应用程序处于沙盒模式时,可能会导致该问题。

【讨论】:

以上是关于通过 Graph API 和 iOS 将照片上传到相册时出现 Facebook 错误:(#1) 发生未知错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 iPhone 中的 Graph API 在 Facebook 上上传照片?

Facebook Graph API和FQL就像照片一样都不正确吗?

Facebook Graph API - 照片上传

Facebook Graph API Explorer 未列出其他人上传的已标记照片

通过您自己的 iOS 应用程序将照片上传到 Instagram

facebook graph api - 缺少字段