ObjC,Facebook的页面 – 张贴新闻饲料作品,但张贴照片没有

所以我想从iPhone应用程序发布我的Facebook页面(我是pipe理员)的照片。 我正在使用FB会话创build会话,获取读取权限,获得manage_pages权限,然后,我成功地获得了我的Facebook页面app-id

[FBRequestConnection startWithGraphPath:@"/me/accounts" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { NSLog(@"%@", [result description]); }]; // have token, what now? 

哪个还好。 然后,我尝试将照片发布到app_id / photos源,并且它不起作用=它正确地上传照片,但显示我(正如在我的configuration文件中)上传照片,而不是页面本身。 可能是什么问题呢?

这是params和调用的代码

 NSDictionary *params = [NSDictionary dictionaryWithObjects: [NSArray arrayWithObjects: [UIImage imageNamed:@"Icon.png"], @"This is my first photo post from xcode app", nil] forKeys:[NSArray arrayWithObjects: @"source", @"message", nil]]; [FBRequestConnection startWithGraphPath:@"MyPageID/photos" parameters:params HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { NSLog(@"%@", [result description]); } ]; 

来自调用的[result description]日志很好(它返回id = xx和“post_id”= yy,我认为这是正确的),就像调用本身 – 唯一的问题是,它显示我作为作者,而不是页面本身。 MyPageID是正确的,因为调用

 NSDictionary *paramsFeed = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"This is my first page post from xcode app", nil] forKeys:[NSArray arrayWithObjects:@"message", nil]]; [FBRequestConnection startWithGraphPath:@"390106241058188/feed" parameters:paramsFeed HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { NSLog(@"result: %@", [result description]); }]; 

此外,用dictionaryKey @“图片”呼叫me/photos并在那里张贴照片,并将照片完美地贴在我自己的墙上。

有谁知道问题可以隐藏的地方?

我find了解决scheme,虽然我觉得奇怪,我不必为/ feed页面更新做这个

非常感谢Arpit Kumar Kulshrestha先生 ,他指出了我之前的问题( Xcode – 如何将照片从iPhone应用程序分享到Facebook托pipe页面Feed )的正确方法,

解决scheme:我已经尝试过设置一个新的FBSession ,但是它仍然有很多错误,所以我已经离开了这个路线,去了另一个。 然而,这样做是非常有意义的 – 创buildFBAccessTokenData ,其中包含页面的标记,并将其他内容设置为与活动会话相同 – 就像这样

 FBAccessTokenData *tokenData = [FBAccessTokenData createTokenFromString:pageTokenString permissions:[FBSession activeSession].accessTokenData.permissions expirationDate:[FBSession activeSession].accessTokenData.expirationDate loginType:FBSessionLoginTypeFacebookApplication refreshDate:nil]; 

那么需要创build一个新的FBSession ,重要的是,它需要将tokenCacheStrategy设置为没有数据的东西,即[FBSessionTokenCachingStrategy nullCacheInstance] 。 我做了一个空白分配( [[FBSession alloc] init] ),这给了我很多错误,但是当我使用这个

 FBSession *sessionFb = [[FBSession alloc] initWithAppID:appID permissions:[NSArray arrayWithObjects: @"publish_stream", @"manage_pages", nil] urlSchemeSuffix:nil tokenCacheStrategy:[FBSessionTokenCachingStrategy nullCacheInstance]]; 

它完美的作品。 而当你有这个新的会话,你想要打开数据来去的path,你可以这样做:

 [sessionFb openFromAccessTokenData:tokenData completionHandler:^(FBSession *session, FBSessionState status, NSError *error) { }]; 

在开始正常工作之前的最后一部分是将activeSession设置为这个新分配和打开的会话,如下所示:

 [FBSession setActiveSession:sessionFb]; 

在我做了所有这些改变之后,照片页面共享开始奇迹般地工作。 然而,我仍然不确定照片分享怎么可能以前没有工作,但饲料份额呢..但这解决了我的问题。