ObjC、Facebook 页面 - 发布新闻源有效,但发布照片无效

2024-01-11

所以我试图从 iPhone 应用程序在我的 Facebook 页面(我是管理员)上发布照片。我正在使用 FB Sessions 创建会话,获取读取权限,获取管理页面权限,然后,我成功获取我的 Facebook 页面应用程序 ID,因为

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

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

这是参数和调用的代码

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]);
 } ];

the [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]);
 }];

另外,打电话me/photos并用字典键@“图片”将照片发布到那里,效果很好,并且它完美地将照片发布在我自己的墙上。

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


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

非常感谢阿尔皮特·库马尔·库什雷斯塔先生 https://stackoverflow.com/users/1653825/arpit-kumar-kulshrestha,他在我之前的问题中指出了正确的方法(Xcode - 如何将照片从 iPhone 应用程序共享到 Facebook 管理的页面提要 https://stackoverflow.com/questions/18869314/xcode-how-to-share-photo-from-iphone-app-to-facebook-managed-page-feed )

解决方案: 我尝试过设置一个新的FBSession以前,但它仍然有很多错误,所以我离开了那条路,去了另一条路。然而,这样做是完全有道理的—— 创造FBAccessTokenData,其中包含页面的令牌,并将其他内容设置为与活动会话相同 - 就像这样

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]];

它工作完美。当你有这个新会话时,你想要打开数据进出的路径,你可以这样做:

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

 }];

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

[FBSession setActiveSession:sessionFb];

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ObjC、Facebook 页面 - 发布新闻源有效,但发布照片无效 的相关文章

  • Oauth 2:access_token 是用户的唯一密钥吗?

    一个用户之后与 Facebook 连接 https developers facebook com docs authentication Facebook 回应access token 我可以假设这个吗access token将始终保持不
  • supportedInterfaceOrientations 方法不会重写其超类中的任何方法

    在 UIViewController 中 这段代码 public override func supportedInterfaceOrientations gt UIInterfaceOrientationMask if let mainC
  • iOS FacebookSDK + 解析 SDK + GoogleMaps SDK

    我搜索了很多 然后我意识到 ObjC标记那个GoogleMapSDK需要 但不能很好地配合ParseSDK and FacebookSDK 所以我阅读了所有的 stackoverflow 答案并尝试解决我的问题 问题还没有解决 我执行的步骤
  • 如何从标签栏控制器上方显示 UIActionSheet 视图?

    我需要在选项卡栏控制器上方显示操作表 我的意思是 即使操作表视图处于可见模式 我也能够看到选项卡栏控制器 因此 请建议如何从选项卡栏控制器上方查看 是否可以 其次 如何更改操作表的背景颜色和取消按钮背景颜色 请帮我 谢谢你 马丹 莫汉 要从
  • 如何在导航栏上添加 UIView?

    我需要覆盖UINavigationBar with UIView像这儿 除了使用带有按钮返回的自定义 UIView 作为导航栏之外 还有其他方法可以做到这一点吗 您可以将子视图添加到应用程序的基本视图 UIApplication share
  • iOS 上关键 ClientState 警告的默认访问速度缓慢

    在测试我的 iOS 应用程序时 我收到 对关键 ClientState 的默认访问速度慢 耗时 0 034635 秒 容差为 0 020000 警告 它似乎是间歇性发生的 我试图环顾四周看看它是关于什么的 但我并不完全确定 任何帮助表示赞赏
  • 在 Xcode 中查找未使用的文件

    我最近开始开发一个新应用程序 它基本上是我以前制作的应用程序的副本 但做了一些更改 为了制作这个新应用程序 我复制了旧应用程序并删除了一些不需要的内容 我想知道 有没有办法知道 Xcode 中正在使用哪些类文件 或者有什么关于如何查找未使用
  • 在 Swift 中的 For 循环中更改对象的属性

    我创建了一个名为 ShoppingList 的简单结构 struct ShoppingList var shoppingListId NSNumber var title String var groceryItems GroceryIte
  • 广告标识符和标识符ForVendor返回“00000000-0000-0000-0000-000000000000”

    我已经实现了这个方法来获得advertisingIdentifier and identifierForVendor NSString advertisingIdentifier if NSClassFromString ASIdentif
  • “无法取消归档名为 UITableViewController 的元素”

    我一直在按照 构建你的第二个 iOS 应用程序 教程一步步进行 在教程承诺所有错误都会消失之后 我遇到了这个错误 但直到其他错误都出现后 该错误才出现 全部更正 我尝试编译它 错误 The document MainStoryboard i
  • UITableViewCell 内嵌套 UIStackView 内的 UILabel 有时会被截断

    我的一个表设置中有一个表视图单元格 其中包含以下视图层次结构 外部水平 stackview 固定到单元格内容视图的尾部 前部 底部和顶部边缘 右侧标签固定到其父 stackViewHackView 的尾部 前部 底部和顶部边缘 在我的控制器
  • Facebook Open Graph API - 另一个应用程序的操作类型和对象类型 (foursquare)

    我正在尝试检索使用 Facebook 开放图发布的用户的 foursquare 签入数据 我通常很难找到有关我不拥有的应用程序的信息 命名空间 操作类型和对象类型 到目前为止 我的应用程序已成功请求用户 我认为是 适当的权限来访问他们已提交
  • Swift 单元测试 - 如何断言 CGColor 是它应该的样子?

    使用 Xcode V7 2 尝试进行单元测试 需要验证是否已设置正确的颜色 并收到以下消息 Cannot invoke XCTAssertEqual with an argument list of type CGColor CGColor
  • 增加 iPhone 的推送通知徽章

    是否可以在收到通知时增加徽章值 或者我应该将计数作为有效负载发送吗 如果我每次都将徽章值发送为 1 那么如果应用程序未打开 我如何增加应用程序图标中的徽章值 我已经使用了这段代码 但不起作用 void application UIAppli
  • 自动生成的 Swift 桥接标头中“找不到接口声明”

    我当前的项目包含 Swift 和 Objective C 代码 两种类型的源文件都使用另一种语言的代码 当我进行完全清理并重新编译时 几乎每个 Swift 类声明都出现错误Module Swift h 形式为 Cannot find int
  • 如何从第二个视图弹回到根视图?

    我使用 2 将 3 个视图 根视图 第 1 个视图 第 2 个视图 连接在一起modal在 Apple Watch 故事板中继续 1 在根视图中 按下 保存 按钮后 将显示第一个模态视图 2 在第一模态视图中 一旦按下 500 按钮 将显示
  • Objective-C 点表示法与类方法?

    请注意 我特别指的是点表示法与类方法一起使用 而不是与实例方法一起使用 出于好奇 我想看看如果我尝试在类方法中使用 Objective C 点表示法语法会发生什么 我的实验如下 import
  • iOS 搜索栏不显示结果

    更新 这实际上有效 我的自定义单元格的样式尚未出现 因此单元格看起来是空白的 那我怎样才能得到searchResultsTableView使用我的自定义单元格 我在表格视图中实现了搜索栏 当我调试时搜索 过滤所有工作 但是当我在搜索栏中输入
  • 获取所有ios应用程序的全局列表[重复]

    这个问题在这里已经有答案了 我想对苹果应用商店进行一些全球统计 一个瓶颈是至少获取所有当前活动应用程序的 ID 这 9 位数字 有谁知道如何获取 iOS 应用商店中当前活动应用程序的所有 id 的完整列表 更好的是特定类别的所有 ID 例如
  • TestFlight 安装的应用程序因 Swift 包管理器依赖项而崩溃

    我们已经迁移了一些 CocoaPod 依赖项 以便在 Xcode 11 中使用 Swift Package Manager 进行构建和链接 但是 每当我们将应用程序提交到 AppStore Connect 并使用 TestFlight 进行

随机推荐