在 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 共享视频文件

无法在 ios 8 的 facebook 上共享自动文本。

在没有 facebook 应用程序的情况下从 iOS 应用程序在 facebook 上共享照片

谁在 Facebook 上与你聊天最多的应用程序?

Facebook SDK 4.0 iOS 不再快速切换到设备上安装的 Facebook APP

在 iOS 8 上将视频分享到 Facebook