在 iOS 11 上与 Facebook 共享不再工作
Posted
技术标签:
【中文标题】在 iOS 11 上与 Facebook 共享不再工作【英文标题】:Share With Facebook Not Working Anymore on iOS 11 【发布时间】:2017-09-25 01:45:14 【问题描述】:我使用适用于 ios 的 Facebook SDK,它在 iOS 10 上运行良好,但是当我将手机升级到 iOS 11 时,Facebook 共享不再工作。请帮忙,提前谢谢。
【问题讨论】:
【参考方案1】:不幸的是,随着 iOS 11 的更新,社交网络服务(Facebook、Twitter、Vimeo 和 Flickr)已被删除,这些服务曾经具有单点登录以实现全系统集成。
改为将此 sn-p 用于 iOS 10 及之前的版本:
let viewController = SLComposeViewController(forServiceType: SLServiceTypeFacebook)
viewController.add(imageView.image!)
viewController.add(URL(string: "http://www.example.com/"))
viewController.setInitialText("Text to post!")
self.present(viewController!, animated: true, completion: nil)
您可以使用FBSDKGraphRequest在 Facebook 上发帖。
首先从 Facebook 开发者控制台创建您的应用。之后,设置您的 Xcode 项目(按照此处的说明操作:https://developers.facebook.com/docs/ios/getting-started/)。
发帖前需要登录用户:
let login: FBSDKLoginManager = FBSDKLoginManager()
login.logIn(withPublishPermissions: ["publish_actions"], from: self) (result, error) in
if (error != nil)
print("publish_actions: \(error!)")
else if (result?.isCancelled)!
print("publish_actions: Canceled")
else if (result?.grantedPermissions.contains("publish_actions"))!
print("publish_actions: permissions granted: \(String(describing: result?.token.tokenString))")
UserDefaults.standard.set(result?.token.tokenString, forKey: "facebook_token")
记录后保存令牌并使用它通过 FBSDKGraphRequest 发布消息:
FBSDKGraphRequest.init(graphpath: "me/feed",
parameters: ["message": "text to post on Facebook"],
tokenString: "token",
version: "v2.10",
httpMethod: "POST").start(completionHandler: (connection, result, error) -> Void in
if let error = error
print("Error: \(error)")
else
print("Posted successfully!")
)
希望对您有所帮助。
【讨论】:
感谢帮助我找到了解决此问题的快速方法,我更新了我的 pod 文件并解决了问题,但感谢帮助人员。 @JosephMikkoManoza,感谢您记录此问题并为我节省了一些时间。将我的 Facebook pod 升级到最新版本为我解决了这个问题。我添加了一个答案来帮助别人。 我不确定您为什么要将令牌字符串存储在 UserDefaults 中。您始终可以使用 FBSDKAccessToken.current() 获取当前令牌,包括权限等。【参考方案2】:iOS 11 的 Facebook Share(在我的例子中是 Objective-c 中的 FBSDKShareDialog)的这个问题已通过升级到最新的 Facebook API 框架得到解决。通过 pods,目前如下:
播客文件
pod 'FBSDKCoreKit', '~> 4.27.0'
pod 'FBSDKLoginKit', '~> 4.27.0'
pod 'FBSDKShareKit', '~> 4.27.0'
在命令提示符下,使用“pod search”将显示 pod 的最新版本。比如pod搜索FBSDKShareKit
【讨论】:
为我工作!谢谢以上是关于在 iOS 11 上与 Facebook 共享不再工作的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 6 及更高版本上与 YouTube 和 Twitter 共享视频文件
在没有 facebook 应用程序的情况下从 iOS 应用程序在 facebook 上共享照片