14

我正在尝试将照片发布到我的应用程序 facebook 粉丝页面和用户墙上。我已经成功将照片发布到用户墙,但未能将其发布到粉丝页面墙。(用户不一定是管理员或页面所有者,只是普通用户。由于粉丝页面具有任何人都可以发布的选项,因此用户甚至不需要先喜欢页面。对吗?

谷歌搜索了一段时间后,我找到了这个答案。根据它,我需要一个粉丝页面的 access_token 和一个 album_id 来这样做。但我找不到任何关于如何获得它们的线索。到目前为止,我已经尝试过这段代码:

if ([appDelegate.facebook isSessionValid]) 
    {
        NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                       resultImage, @"picture",
                                       nil];

        [appDelegate.facebook requestWithGraphPath:@"me/photos"
                                         andParams:params
                                     andHttpMethod:@"POST"
                                       andDelegate:self]; // to post on users wall, works fine

         NSString *path = [NSString stringWithFormat:@"my/accounts /fan_page_id?fields=access_toke/photos"];
        [appDelegate.facebook setAccessToken: FACEBOOK_ACCESS_TOKEN];

        [appDelegate.facebook requestWithGraphPath:path andParams:params andHttpMethod:@"POST" andDelegate:self]; // to post on fan page wall,  this doesn't work
    }

谁能帮我这个?我在这里想念什么?提前致谢。

更新

根据这个答案,普通用户不能从 iOS 应用程序将照片发布到粉丝页面墙上,但可以在上面分享照片。现在,我的问题是,如何实现将照片发布到用户墙并同时分享到粉丝页面墙上?是否可以?如何在粉丝专页墙上分享照片?

更新 2

这个答案和问题说普通用户可以通过新闻提要发布到粉丝页面墙上,所以我修改了我的代码,如下所示:

if ([appDelegate.facebook isSessionValid]) {
        NSMutableDictionary *page_params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                       @"fan_page_id", @"to",
                                       @"Test", @"name",
                                       @"Test", @"caption",
                                       resultImage, @"picture",
                                       nil];
        [appDelegate.facebook   dialog:@"feed"
                                andParams:page_params
                                andDelegate:self];

}

但是,我不断收到这个荒谬的错误消息并且应用程序崩溃:

-[UIImage length]: unrecognized selector sent to instance 0x24d110
2012-06-06 19:59:03.114 app_name[2739:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImage length]: unrecognized selector sent to instance 0x24d110'

我现在该怎么办?

等了这么久,现在我的脑海里浮现出一个问题,这可能吗?如果是这样,我该如何完成这项任务?如果没有,那么有什么替代方案?请帮忙。

更新 3

刚刚发现iOS sdk 和 javascript sdk 中都有一个已知的错误,用于在粉丝页面墙中发布对话框。图片上传也是这样吗?如果有人有避免此错误的解决方案,请提供帮助。

4

4 回答 4

7

由于 API 中的错误,目前(2012 年 6 月)不可能:https ://developers.facebook.com/bugs/206254392780441有详细信息。

一种解决方法是发布到/feed页面的连接并将图像附加到提要故事。该图像不会显示为正确上传的照片那么大,但应该可以正常工作。

该错误意味着/PAGE_ID/photos使用用户发布到页面的连接access_token会错误地将照片上传到用户的/photos连接。

使用页面的;时,发布到页面的/photos连接将按预期工作 access_token照片将出现在页面的照片页面、页面的时间轴上,并归属于页面本身(即“来自”页面)

如果您的应用专门用于向页面添加内容,并且具有服务器端组件,则将用户的照片放到页面上的另一种解决方法是让用户通过您自己的界面向您提供照片(即上传从用户的设备到您的服务器),并使用页面管理员之一access_tokens获取页面access_token并以这种方式进行上传。

于 2012-06-10T20:08:35.033 回答
0

除了使用对话框,您可以要求用户授予权限- publish_stream
(因为对话框组件中存在错误,否则不需要)

然后您可以在页面墙上发布(假设页面允许在页面设置中)。

您可以尝试使用graph api explorer。您可以通过在扩展权限选项卡中授予上述权限来更改页面 ID 和测试。

注意
您应该记住的另一件事是,您不能在图片参数中发送图像数据。您应该提供指向图像的链接。

于 2012-06-07T15:23:18.303 回答
0

我只是尝试解决异常错误。可以发布到您的粉丝页面新闻提要。不可能作为粉丝页面本身发布,因为这需要身份验证(因此访问令牌要求......您必须以该用户身份登录才能以他们的身份发布)。@Igy 已经在上面解决了这个问题。

但是,您没有使用图像选择器获取图像的位置的代码。你得到的例外是因为你试图检查 UIImage 对象而不是 NSData 对象的长度(这是 Facebook 需要的)。要将您的图像从选择器转换为数据,请使用下面的代码段(将 img 变量替换为您的 UIImage)。

NSData *imgData = UIImageJPEGRepresentation(img, 0);

// Now call to length by facebook SDK will work and the exception will not fail
NSLog(@"Size of Image(bytes):%d",[imgData length]);
于 2012-06-12T17:19:16.647 回答
0

我认为您在发布照片时使用了错误的论据

你应该使用@"url"而不是@"picture"

我不确定这一点,但它可能会起作用。

我在 javaScript 中遇到了同样的问题,已解决。

请查看此处以参考我的问题

于 2012-06-15T18:44:41.843 回答