FBSDKShareDialog未显示并返回错误2

时间:2017-10-16 15:49:45

标签: ios swift facebook video swift3

嗨,我本周已经将我的应用程序改编为iOs11,从昨天到今天,尝试将分享视频重新设置为iOs 11中的facebook按钮,但没有成功。我已经尝试了所有东西,谷歌搜索,尝试了stackOverflow中的所有内容,但我坚持这一点。 关键是一切都停止工作,因为我改变了保存视频的方式。我正在使用ALAsset并更改为PHAsset。 我不知道这是否是原因,但让Facebook提示分享我的视频是不可能的。我已经尝试了我在这里看到的每一段代码。 我的视频网址为" file:///var/mobile/Media/DCIM/100APPLE/IMG_0233.MP4"除了文件名,我觉得一切都还好。我的应用程序检查用户是否已登录,以及是否具有“是”的发布权限。然后它配置提示,以显示它。但总是以委托的错误方法结束:

/**
 Sent to the delegate when the sharer encounters an error.
 - Parameter sharer: The FBSDKSharing that completed.
 - Parameter error: The error.
 */

func sharer(_ sharer: FBSDKSharing!, didFailWithError error: Error!) {
    print(error.localizedDescription)
} 

这是错误:

The operation couldn’t be completed. (com.facebook.sdk.share error 2.)

这是我的代码。我不知道会发生什么,除了来自phAsset的已保存视频与facebook不兼容,我怀疑。但也许这里的人比我更了解这个并且可以提供帮助。

非常感谢提前!

这里是按下facebook按钮后运行的代码:

//save video with PHAsset
    self.avHandler.saveWithPHAsset { (void) -> () in

//get url of the video 
                        guard let urlToShare = self.avHandler.self.mergedLocalAssetVideoURL else {
                            return
                        }

                        if FBSDKAccessToken.current() != nil
                        {

                            if FBSDKAccessToken.current().hasGranted("publish_actions")
                            {
                                print("permission granted")
                                let video = FBSDKShareVideo(videoURL: urlToShare)
                                let dialog = FBSDKShareDialog()
                                DispatchQueue.main.async{
                                    if UIApplication.shared.canOpenURL(URL.init(string: "fbauth2://")!)
                                    {
                                        dialog.mode = FBSDKShareDialogMode.native
                                    }
                                    else{
                                        dialog.mode = FBSDKShareDialogMode.browser
                                    }
                                }


                                let content : FBSDKShareVideoContent = FBSDKShareVideoContent()
    //                                content.contentURL = NSURL.init(string: urlToShare.absoluteString) as! URL
                                let image = UIImage(data: self.recordingInfo.thumbData)
                                let fbimage = FBSDKSharePhoto(image: image, userGenerated: false)
                                content.previewPhoto = fbimage!
                                content.video = video!
                                content.contentURL = urlToShare
                                dialog.delegate = self
                                dialog.shareContent = content
                                dialog.fromViewController = self
    //                            FBSDKShareDialog.show(from: self, with: content, delegate: self)
                                dialog.show()


                            }
                            else
                            {
                                print("don't have permission")

                            }
                        }
                        else
                        {
                            "Please login to facebook in the tab menu".displayInfo()
                        }
                    }

0 个答案:

没有答案