それで、私はこれをかなり長い間調査してきましたが、大衆に手を差し伸べて尋ねることにしました.
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 を開発サイトに追加しました。