4

それで、私はこれをかなり長い間調査してきましたが、大衆に手を差し伸べて尋ねることにしました.

iOS アプリを介して Facebook に投稿する場合、アプリは書き込みの前に読み取りを行う必要があることを私は知っています。つまり、ウォールに投稿する前に、ユーザーのメールを読み取ります。そして、これらの許可リストを同じ要求で行うことはできないことを知っています。そのため、次のようなコードをつなぎ合わせました。

class func postToFacebook(message: String, appID: String){

    var accountStore = ACAccountStore()
    var accountType = accountStore.accountTypeWithAccountTypeIdentifier(ACAccountTypeIdentifierFacebook)

    var optionsForPosting = [ACFacebookAppIdKey:appID, ACFacebookPermissionsKey: ["email"], ACFacebookAudienceKey: ACFacebookAudienceFriends]

    accountStore.requestAccessToAccountsWithType(accountType, options: optionsForPosting) {
        granted, error in
        if granted {

                var options = [ACFacebookAppIdKey:appID, ACFacebookPermissionsKey: ["publish_stream", "publish_actions"], ACFacebookAudienceKey: ACFacebookAudienceFriends]

                accountStore.requestAccessToAccountsWithType(accountType, options: options) {
                    granted, error in
                    if granted {
                        var accountsArray = accountStore.accountsWithAccountType(accountType)

                            if accountsArray.count > 0 {
                            var facebookAccount = accountsArray[0] as ACAccount

                            var parameters = Dictionary<String, AnyObject>()
                            parameters["access_token"] = facebookAccount.credential.oauthToken
                            parameters["message"] = message

                            var feedURL = NSURL(string: "https://graph.facebook.com/me/feed")

                            let posts = SLRequest(forServiceType: SLServiceTypeFacebook, requestMethod: SLRequestMethod.POST, URL: feedURL, parameters: parameters)

                            let handler: SLRequestHandler =  { (response, urlResponse, error) in
                                println(response)
                                println(urlResponse.statusCode)
                            }

                            posts.performRequestWithHandler(handler)
                        }
                    }
                    else{
                        println("Access denied")
                        println(error.localizedDescription)
                    }
                }
        }
        else{
            println("Access denied")
            println(error.localizedDescription)
        }
    }
}

残念ながら、私はまだ得ています

The Facebook server could not fulfill this access request: Invalid permission: publish_stream

Facebook 開発サイトでアプリをセットアップし、正しいバンドル ID を開発サイトに追加しました。

4

2 に答える 2

3

答えは、「publish_stream」を使用する多くのチュートリアルにもかかわらず、許可として機能しないようだということでした。

于 2014-08-25T18:21:34.717 に答える
0

FB アプリ ID を plist に追加しようとしましたか?

<key>FacebookAppID</key>
<string>101010101010</string>
<key>FacebookDisplayName</key>
<string>MyCoolProject</string>

デベロッパー サイトから FB アプリ ID を取得します。

于 2016-07-13T13:55:37.977 に答える