OGeek|极客世界-中国程序员成长平台

标题: ios - ObjC,Facebook 页面 - 发布新闻提要有效,但发布照片无效 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 14:39
标题: ios - ObjC,Facebook 页面 - 发布新闻提要有效,但发布照片无效

所以我试图通过 iPhone 应用在我的 Facebook 页面(我是管理员)上发布照片。我正在使用 FB Sessions 创建 session ,获得读取权限,获得 manage_pages 权限,然后,由于

,我成功获得了我的 Facebook Pages app-ids
[FBRequestConnection startWithGraphPath"/me/accounts" completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
 {
     NSLog(@"%@", [result description]);
 }]; // have token, what now?

这仍然很好。然后,我尝试将照片发布到 app_id/photos 提要,但它不起作用 = 它正确上传照片,但显示我(如在我的个人资料中)上传照片而不是页面本身。可能是什么问题?

这是参数和调用的代码

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"OST" 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"OST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
 {
     NSLog(@"result: %@", [result description]);
 }];

另外,调用 me/photos 并使用 dictionaryKey @"picture"将照片发布到那里是有效的,它可以完美地将照片发布到我自己的墙上。

有谁知道问题可能 Conceal 在哪里?



Best Answer-推荐答案


我找到了解决方案,虽然我觉得很奇怪我不必为/feed 页面更新执行此操作

非常感谢 Mr. Arpit Kumar Kulshrestha ,谁在我之前的问题化身中指出了正确的方法(Xcode - how to share photo from iPhone app to Facebook managed page feed)

解决方案: 我之前尝试过设置一个新的 FBSession ,但它仍然有很多错误,所以我离开了那条路线并去了另一条路线。但是,这样做非常有意义 - 创建 FBAccessTokenData,其中包含页面的 token ,并将其他内容设置为与事件 session 相同 - 像这样

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

然后,需要创建一个新的 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]];

完美运行。当你有这个新 session 时,你想打开数据来来去去的路径,你可以这样:

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

 }];

在它开始正常工作之前的最后一部分是将 activeSession 设置为这个新分配和打开的 session ,这样:

[FBSession setActiveSession:sessionFb];

在我完成所有这些更改后,照片页面共享开始神奇地工作。 但是,我仍然不确定照片共享之前怎么可能不起作用,但提要共享却起作用了..但这解决了我的问题。

关于ios - ObjC,Facebook 页面 - 发布新闻提要有效,但发布照片无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18880426/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4