FacebookSDKのpublish_actionsはちょっと面倒
FacebookSDKでは、アプリから直接画像やらテキストなどを投稿する機能が提供されています。いわゆるpublish_actionsというやつです。これを使えば色々便利なんですが、アプリとFacebookを連携させてユーザから権限の承認を取る必要があったり、Facebookのアプリ審査も必要になってきます。私もアプリの審査を出したことがありますがアプリのデータの提出を求められたりして面倒でした。それに加えて、アプリからユーザが意図した以外のテキストや画像が自動投稿されることを厳しく取り締まっているので、審査を通すこと自体もなかなか難易度が高いはずです。
publish_actionsについては公式サイトで確認できます。
https://developers.facebook.com/docs/facebook-login/permissions/#reference-publish_actions
単にアプリから特定のURLをシェアさせるならFBSDKShareDialogが便利です。これはURLをシェアする、というテイなので特に権限追加も審査も必要なく非常に使い勝手がよいです。
使い方
こんな感じにpostFacebookにシェアするURLを投げてあげればSDK側でダイアログの表示をしてくれます。この時、スマホにFacebookアプリがインストールされていて、かつログイン状態である必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import FBSDKShareKit private func postFacebook(urlStr: String) { let url:NSURL = NSURL(string: urlStr)! let dialog = FBSDKShareDialog() dialog.shareContent = self.getShareLinkContent(url) dialog.mode = FBSDKShareDialogMode.Native if dialog.canShow() { FBSDKShareDialog.showFromViewController(self, withContent: self.getShareLinkContent(url), delegate: nil) } else { self.showNotFoundFacebookAccountAlert() } } private func getShareLinkContent(objectURL: NSURL) -> FBSDKSharingContent { let content = FBSDKShareLinkContent() content.contentURL = objectURL return content } private func showNotFoundFacebookAccountAlert() { let title = "FAILED" let message = "ERROR" let alert = UIAlertController(title: title, message: message, preferredStyle: .Alert) alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: { action in })) self.presentViewController(alert, animated: true, completion: nil) } |
そんなに難しくありませんね。